javascript – 在Internet Explorer中没有正确更新ngModel – AngularJS 1.3
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在Internet Explorer中没有正确更新ngModel – AngularJS 1.3,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1543字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 在Internet Explorer中没有正确更新ngModel – AngularJS 1.3](/upload/InfoBanner/zyjiaocheng/745/1c80ee4bd7424c60bad08997e58b7540.jpg)
您好,我有一个奇怪的问题,只出现在角色1.3的IE 11中.
我有一个指令允许我将Object存储为输入元素的ngModel值.它对AngularJS 1.2没有任何问题,但它不适用于AngularJS 1.3(仅在Internet Explorer中).
它只是代码:
elem.on('input', function(){
var val = elem.val();
ngModel.$setViewValue({
'sampleData': new Date().getTime(),
'value': val
});
scope.$apply();
});
当我在IE中键入文本时,输入将正确的对象设置为模型值几毫秒,但接下来将其更改为字符串.在其他浏览器中,它正确更新ngModel.
你可以在那里看到这种奇怪的行为:
AngularJS 1.2:http://jsfiddle.net/aartek/e6Lvpqj3/(适用于IE,Chrome和Firefox),
AngularJS 1.3:http://jsfiddle.net/aartek/mvx9dbyu/2/(在IE 11中不起作用,适用于Chrome和Firefox)
是什么原因,我该如何解决?
这是我的全部指示:
app.directive('myInput',function(){
return{
restrict: 'A',
require: 'ngModel',
scope: {},
priority: 1,
link: function(scope, elem, attrs, ngModel){
elem.off('input');
elem.off('change');
ngModel.$render = function(){
var model = {
'sampleData': 'sampleData',
value: ''
}
ngModel.$setViewValue(model);
elem.val(model.value);
}
elem.on('input', function(){
var val = elem.val();
ngModel.$setViewValue({
'sampleData': new Date().getTime(),
value: val
});
scope.$apply();
});
}
}
});
解决方法:
Angular 1.3对IE浏览器的输入事件有一些破解.请分析$SnifferProvider.hasEvent函数.此函数在inputDirective中使用,以保证不支持输入事件的浏览器的viewValue正确.解决方法基于广泛支持的keydown事件.
修复IE简单转换keydown事件的代码示例以禁用所有触发器.
link: function(scope, elem, attrs, ngModel){
elem.off('input');
elem.off('change');
elem.off('keydown');
...
内容总结
以上是互联网集市为您收集整理的javascript – 在Internet Explorer中没有正确更新ngModel – AngularJS 1.3全部内容,希望文章能够帮你解决javascript – 在Internet Explorer中没有正确更新ngModel – AngularJS 1.3所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。