我有一个指令,它取ng-model
值并将值转换为mm / inch单位取决于scope.unit
,可以通过用户选择更改
我更喜欢使用ngModel。$ formatters ngModel。$ parsers而不是chnage控制器中的值,因为这个更改只是视图(实际上控制器中的实际值是0.1mm单位)
这是指令:
(function () {
angular.module('mainModule').directive("unitConverter", function () {
return {
restrict: "A",
scope: {
unit: '@'
},
require: "ngModel",
link: function (scope, elem, attrs, ngModel) {//1-mm //0-inch
ngModel.$parsers.push(function (value) {
if (parseInt(scope.unit) === 1) {
return (value * 10)
}
else {
return ((parseFloat(value) * 10) * 25.4);
}
});
ngModel.$formatters.push(function (value) {
if (parseInt(scope.unit) === 1) {
return parseFloat(value) / parseFloat(10)
}
else {
return ((parseFloat(value) / parseFloat(10)) / parseFloat(25.4));
}
});
}
};
});
})();
它工作正常,但当用户更改单位值(绑定到scope.unit
)时
格式化程序/解析器没有再次运行,实际上它仍保留第一个scope.unit
值。
我的问题:如何强制角度获取更新的scope.unit
值并更新视图。