我遇到了ngModel.NgModelController。$解析器的问题。我在例子中解释它: 我为输入字段创建指令。每当我在html中更改此输入中的值时,它应该调用我的注册函数。
此注册函数应始终将您在输入字段中写入的内容更改为' A' char,但修改模型。
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次相同的按钮,例如&#39; 1&#39 ;.
第一次显示&#39; A&#39;在输入字段和浏览器控制台i'm here
中。第二次也一样。但第三次显示&#39; A&#39; +推送char(例如&#39; A1&#39;)而不是在浏览器控制台i'm here
中写入,这意味着未调用注册的函数。
请告诉我,我的代码中是否有错误(请写下要更改的内容),或者是有角度的错误(然后我向有角度的小组报告错误)?我在os x(10.10.5)中用最新的chrome和safari测试它。如果它没有问题,请写下来。
答案 0 :(得分:1)
我向有角度的团队报告此问题。完整的回复是https://github.com/angular/angular.js/issues/13068。
简而言之,在类似的情况下,最好使用它:
ngModelController.$viewValue ="A";
然后这个:
{{1}}
为角度1.4.7工作jsfiddle: http://jsfiddle.net/455qdd6p/1/
我需要它来解决我的角度模块https://github.com/uhlryk/angular-dynamic-number