Угловой: нг-модель как число
У меня есть select
который я представляю так:
<select
ng-model="otherDoc.sub_category"
ng-options="key as value for (key, value) in vm.otherDocs"
>
</select>
otherDoc.sub_category
это number
однако метод select преобразует значение в строку. Так что они не совпадают.
Как я могу сказать угловой, чтобы соответствовать модели для контента, а не для типа?
1 ответ
Решение
Хитрость заключается в использовании форматеров ngModel.$ И форматеров ngModel.$
Если я вас понимаю, вы хотите, чтобы значение, возвращаемое из выбора, было преобразовано обратно в число, прежде чем оно попадет в модель (otherDoc.sub_category).
Я бы добавил директиву к вашему выбору, вот так
(HTML)
<select
ng-model="otherDoc.sub_category
ng-options="key as value for (key, value) in vm.otherDocs"
formatter-directive>
</select>
(Javascript)
angular.module('someModuleName').directive('formatterDirective', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
ngModel.$formatters.push(function(val) {
return parseInt(val, 10);
});
}
};
});
Значение в вашей модели будет проанализировано в целых 10 целых, когда оно вернется из представления.