Angular:建模为数字
Angular: ng-model as a number
我有一个 select
,我这样渲染:
<select
ng-model="otherDoc.sub_category"
ng-options="key as value for (key, value) in vm.otherDocs"
>
</select>
otherDoc.sub_category
是 number
然而,select 将值转换为字符串。所以他们不匹配。
如何告诉 angular 匹配模型的内容而不是类型?
诀窍是使用 ngModel.$parsers 和 ngModel.$formatters
如果我理解您的意思,您希望从 select 返回的值在到达模型 (otherDoc.sub_category) 之前被转换回数字。
我会像这样向您的 select 添加一个指令
(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 为底的整数。
我有一个 select
,我这样渲染:
<select
ng-model="otherDoc.sub_category"
ng-options="key as value for (key, value) in vm.otherDocs"
>
</select>
otherDoc.sub_category
是 number
然而,select 将值转换为字符串。所以他们不匹配。
如何告诉 angular 匹配模型的内容而不是类型?
诀窍是使用 ngModel.$parsers 和 ngModel.$formatters
如果我理解您的意思,您希望从 select 返回的值在到达模型 (otherDoc.sub_category) 之前被转换回数字。
我会像这样向您的 select 添加一个指令
(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 为底的整数。