大佬教程收集整理的这篇文章主要介绍了切换或禁用/重新启用AngularJS手表,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在场上有几个观察者用于计算“总计”字段.
这些字段也可以从保存状态加载,这也会触发计算“总计”字段的手表.
“总计”字段也可以手动覆盖,保存和加载.
当手动覆盖“总计”字段与其他字段一起加载时,会发生此问题.重新计算“总计”的手表将被触发,并覆盖手动覆盖的“总计”.
我需要能够在负载发生时忽略手表.有什么办法吗?
我知道可以使用在创建手表时传回的取消注册功能来禁用观察者,但是当您重新创建观察者时仍然知道它正在观看的数据已经改变.
注意:这是围绕该问题的业务逻辑的过于简化的描述.无法禁用手表需要大量工作.
代码示例
http://jsfiddle.net/snicksnk/66osj8zm/
//service for working with watcher's binding var watchservice = { watchers: {},create: function(name,callBACk){ watchservice.watchers[name] = { 'callBACk': callBACk,'disableCallBACk': null }; },enable: function($scope,Name){ if (typeof watchservice.watchers[name]['callBACk'] !== 'function'){ return; } watchservice.disable(Name); var watcher = watchservice.watchers[name]['callBACk']; watchservice.watchers[name]['disableCallBACk'] = $scope.$watch(name,watcher,truE); },disable: function(Name){ if (typeof watchservice.watchers[name]['disableCallBACk'] !== 'function'){ return; } watchservice.watchers[name]['disableCallBACk'](); } }; //CreaTing of watcher's callBACks,instead of using $scope.$watch directly watchservice.create('item.value1',function() { $scope.item.@R_102_10586@l = $scope.item.value1 * $scope.item.value2; }); watchservice.create('item.value2',function() { $scope.item.@R_102_10586@l = $scope.item.value1 * $scope.item.value2; }); //Wathcers enabler $scope.enableWatchers = function(){ watchservice.enable($scope,'item.value1'); watchservice.enable($scope,'item.value2'); }; //Wathcers disable $scope.disableWatchers = function(){ watchservice.disable('item.value1'); watchservice.disable('item.value2'); };
以上是大佬教程为你收集整理的切换或禁用/重新启用AngularJS手表全部内容,希望文章能够帮你解决切换或禁用/重新启用AngularJS手表所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。