angular 1.4.7 ngModel.NgModelController.$parsers 不调用函数
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 进行测试:
angular 1.2.9 : http://jsfiddle.net/hwzxfon3/1/
angular 1.4.7 : http://jsfiddle.net/372re41m/1/
并且在 angular 1.2.9 中它工作正常。在 angular 1.4.7 中有一些问题。如何获得:
专注于输入字段,然后按 3 次相同的按钮,例如'1'。
第一次它在输入字段和浏览器控制台中显示 'A' i'm here
。第二次也一样。但是第三次它显示 'A'+pushed char(例如 'A1')而不是在浏览器控制台中写入 i'm here
,这意味着未调用已注册的函数。
请告诉我,如果我的代码中有错误(请写下要更改的内容),或者它是 angular 中的错误(然后我向 angular 团队报告错误)?我在最新的 chrome 中测试它,在 os x (10.10.5) 中测试它。如果它对你没有问题,请也写下这个。
我向 angular 团队报告了这个问题。有完整的回复 https://github.com/angular/angular.js/issues/13068.
总之,类似的情况最好用这个:
ngModelController.$setViewValue("A");
然后这个:
ngModelController.$viewValue ="A";
为 angular 1.4.7 工作的 jsfiddle:
http://jsfiddle.net/455qdd6p/1/
我需要它来解决我的 angular 模块 https://github.com/uhlryk/angular-dynamic-number
我对 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 进行测试:
angular 1.2.9 : http://jsfiddle.net/hwzxfon3/1/
angular 1.4.7 : http://jsfiddle.net/372re41m/1/
并且在 angular 1.2.9 中它工作正常。在 angular 1.4.7 中有一些问题。如何获得:
专注于输入字段,然后按 3 次相同的按钮,例如'1'。
第一次它在输入字段和浏览器控制台中显示 'A' i'm here
。第二次也一样。但是第三次它显示 'A'+pushed char(例如 'A1')而不是在浏览器控制台中写入 i'm here
,这意味着未调用已注册的函数。
请告诉我,如果我的代码中有错误(请写下要更改的内容),或者它是 angular 中的错误(然后我向 angular 团队报告错误)?我在最新的 chrome 中测试它,在 os x (10.10.5) 中测试它。如果它对你没有问题,请也写下这个。
我向 angular 团队报告了这个问题。有完整的回复 https://github.com/angular/angular.js/issues/13068.
总之,类似的情况最好用这个:
ngModelController.$setViewValue("A");
然后这个:
ngModelController.$viewValue ="A";
为 angular 1.4.7 工作的 jsfiddle: http://jsfiddle.net/455qdd6p/1/
我需要它来解决我的 angular 模块 https://github.com/uhlryk/angular-dynamic-number