[英]angular 1.4.7 ngModel.NgModelController.$parsers not call function
我對ngModel.NgModelController。$ parsers有問題。 我在示例中進行解釋:我為輸入字段創建指令。 每次我在html中更改此輸入中的值時,它應該調用我的注冊函數。
並且此注冊功能應始終將您在輸入字段中寫的內容更改為“ A”字符,但要修改模型。
html文件 :
<div ng-app="myApp">
<form>
<input ng-model="myval1" somedir/>
</form>
</div>
和js文件 :
var myApp = angular.module('myApp', []);
myApp.directive("somedir", function(){
return {
restrict:'A',
require: '?ngModel',
link: function(scope, element, attrs, ngModelController) {
ngModelController.$parsers.unshift(function(val){
console.log("i'm here");
ngModelController.$viewValue ="A";
ngModelController.$render();
return val;
});
}
}
});
我准備jsfiddle進行測試:
角1.2.9: http : //jsfiddle.net/hwzxfon3/1/
角1.4.7: http : //jsfiddle.net/372re41m/1/
在角度1.2.9中,它可以正常工作。 在角度1.4.7中存在一些問題。 如何獲取:專注於輸入字段,然后按3次相同的按鈕,例如“ 1”。 第一次在輸入字段和瀏覽器控制台中顯示“ A”時, i'm here
。 第二次也一樣。 但是第三次顯示“ A” +按下字符(例如“ A1”)並且沒有在瀏覽器控制台中寫入, i'm here
,這意味着未調用注冊功能。
請告訴我,如果我的代碼中有錯誤(請寫更改內容),或者是角度錯誤(然后我向角度小組報告錯誤)? 我在os x(10.10.5)的最新chrome和safari中對其進行了測試。 如果它對您沒有問題,請也寫下此內容。
我將這個問題報告給了角力團隊。 完整的響應在那里https://github.com/angular/angular.js/issues/13068 。
簡而言之,在類似情況下,最好使用以下命令:
ngModelController.$setViewValue("A");
然后這個:
ngModelController.$viewValue ="A";
適用於angular 1.4.7的jsfiddle: http : //jsfiddle.net/455qdd6p/1/
我需要它來解決我的角度模塊https://github.com/uhlryk/angular-dynamic-number
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.