仅更新“视图”的值,所以我有这样在控制器中的十进制值:使用角指令
// Controller
var MyController = function($scope) {
...
$scope.percentValue = 0.05; // can be stored
...
};
<!-- View -->
<span>{{percentValue}}</span>
<input ng-model="percentValue" />
与上面的代码,在input
元件的值是0.05
- 然而,我想允许用户输入一个整数值,如5
。
因此,如果$ scope.percentValue为0.05
,我想它显示为输入元素5
。如果用户输入5
,则$ scope.percentValue应该是0.05
。
然而,这里的棘手的事情是我只是想更新视图值 - 这意味着span
元素还是应该显示0.05
。只有输入元素中的值应该是5
。
我试图用ngModel来实现这一点,但我仍在挣扎。
这是我现在有:
var MyDirective = function() {
function link(scope, element, attrs, ngModel) {
ngModel.$render = function() {
element.val(ngModel.$viewValue || '');
};
ngModel.$formatters.push(function (value) {
return value * 100;
});
element.on('change blur', function() {
ngModel.$setViewValue(element.val());
});
}
return {
restrict: 'A',
require: '?ngModel',
scope: {},
link: link
};
};
请指教!
尝试使用过滤器代替。 – Claies
@KimchiMan,你已经在使用'$ formatters'来转换模型表示以便显示,所以只需简单地定义一个'$ parsers'就可以以另一种方式来完成它,就像so-http://plnkr.co/edit/ lB6GaT1ZSrVsOi9PS1u9?p =预览 – miqid
@miqid,你的回答正是我想要的 - 你能在答案部分添加代码吗?我将它标记为答案 –