0

我有一个select我这样渲染的:

<select
    ng-model="otherDoc.sub_category"
    ng-options="key as value for (key, value) in vm.otherDocs"
>
</select>

otherDoc.sub_categorynumber但是,选择将值转换为字符串。所以他们不匹配。

我如何告诉 angular 匹配模型的内容而不是类型?

4

1 回答 1

2

诀窍是使用 ngModel.$parsers 和 ngModel.$formatters

如果我理解你,你希望从选择返回的值在它到达模型(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 为底的整数。

于 2017-01-04T20:47:30.160 回答