У меня есть угловые параметры, где я показываю размер файла, но я использую значение переменной для вычисления некоторых байтов, где мне нужно просто целое, например, если пользователь выбирает "1 МБ", я хочу назначить переменной maxMb 1. возможно ли это с помощью javascript?
ctrl.js
var maxMb;
$scope.FileSizeOptions = ["1MB","2MB","3MB","4MB","5MB"];
$scope.$watch('selectedFileSize',function (Val) {
maxMb = Val;
console.log('File Size', maxMb);
})
var maxBytes = 1000 * 1000 * maxMb;
Если у вас есть контроль над набором данных, я бы рекомендовал установить fileSizeOption как массив объектов с как отображаемым значением, так и значением размера. Таким образом, нет разборчивости объектов. См. Фрагмент кода и код
http://codepen.io/Lethargicgeek/pen/BzEjPX
angular.module("myApp", []);
angular.module("myApp").controller("myCtrl", ctrlFn);
function ctrlFn() {
var $ctrl = this;
$ctrl.fileSizeOptions = [{
size: 1,
value: "1MB"
}, {
size: 2,
value: "2MB"
}, {
size: 3,
value: "3MB"
}, {
size: 4,
value: "4MB"
}, {
size: 5,
value:"5MB"
}];
$ctrl.onChange = onChange;
function onChange() {
$ctrl.maxMb = $ctrl.selectedFileSize.size;
$ctrl.maxBytes = 1000 * 1000 * $ctrl.maxMb;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<div ng-app="myApp">
<div ng-controller="myCtrl as $ctrl">
<select ng-model="$ctrl.selectedFileSize"
ng-options="opt as opt.value for opt in $ctrl.fileSizeOptions"
ng-change="$ctrl.onChange()">
</select>
<dl>
<dt>$ctrl.selectedFileSize</dt>
<dd>{{$ctrl.selectedFileSize}}</dd>
<dt>$ctrl.maxMb</dt>
<dd>{{$ctrl.maxMb}}</dd>
<dt>$ctrl.maxBytes</dt>
<dd>{{$ctrl.maxBytes}}</dd>
</dl>
</div>
</div>
Вы можете (ab) использовать parseInt
и тот факт, что он преобразует строку в целое число и остановит преобразование, когда оно попадет в нечисловой символ.
console.log(parseInt('1MB', 10)); // 1
console.log(parseInt('2MB', 10)); // 2
console.log(parseInt('5MB', 10)); // 5
console.log(parseInt('10MB', 10)); // 10
maxMb
будет неопределенным.
Вы можете отрезать последние два символа, а затем использовать унарный +
для принудительного перевода в int или заменить все нечисловые символы, а затем принудительно использовать значение.
console.log(+'1MB'.slice(0, -2));
console.log(+'1MB'.replace(/\D/g, ''));
filesizeoptions = {"1MB" : 1, "2MB":2}
, либо какое-нибудь хакинг / преобразование строки, чтобы извлечь целое число из вашей строки.parseInt('1MB') -> 1