僅更新「視圖」的值,所以我有這樣在控制器中的十進制值:使用角指令
// 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,你的回答正是我想要的 - 你能在答案部分添加代碼嗎?我將它標記爲答案 –