我已经制作了一个自定义指令并使用了ng-model,但是当模型更新时,该指令即使我正在观看该事件.这是代码:
angular.module('Directives').directive("customDirective",['$window',function ($window) { return { restrict: "E",require: 'ngModel',scope: { ngModel: '=',},link: function (scope,elem,attrs,ngModel) { // IF the model changes,re-render scope.$watch('ngModel',function (newVal,oldVal) { render(); }); // We want to re-render in case of resize angular.element($window).bind('resize',function () { //this does work render(); }) var render = function () { //doing some work here }; } }}]);
和观点:
<div ng-repeat="product in pageCtrl.productList track by product.id"> <h3>{{ product.name }}</h3> <custom-directive ng-model="product.recentPriceHistory"> </custom-directive>
每当将新值添加到产品recentPriceHistory时,视图都不会更新.
解决方法
默认情况下,将旧值与新值进行比较时,将检查“参考”相等性.但如果你需要检查价值,那么你需要这样做,
scope.$watch('ngModel',oldVal) { render(); },true);
但是这里的问题是angular会深入监视ngModel的所有属性以进行更改.如果ngModel变量是一个复杂的对象,它将影响性能.你可以做到这一点来避免这种情况只检查一个属性,
scope.$watch('ngModel.someProperty',true);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。