Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了切换或禁用/重新启用AngularJS手表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要能够在执行特定任务时忽略特定的手表.这是场景.

我在场上有几个观察者用于计算“总计”字段.

可以手动修改所有这些字段,这将触发计算“总计”字段的手表.

这些字段也可以从保存状态加载,这也会触发计算“总计”字段的手表.

“总计”字段也可以手动覆盖,保存和加载.

当手动覆盖“总计”字段与其他字段一起加载时,会发生此问题.重新计算“总计”的手表将被触发,并覆盖手动覆盖的“总计”.

我需要能够在负载发生时忽略手表.有什么办法吗?

我知道可以使用在创建手表时传回的取消注册功能来禁用观察者,但是当您重新创建观察者时仍然知道它正在观看的数据已经改变.

注意:这是围绕该问题的业务逻辑的过于简化的描述.无法禁用手表需要大量工作.

这是一个显示问题的小提琴:jsfiddle.net/vGWZy/1/

解决方法

您可以在特殊服务中存储观察者的回调和禁用,并使用服务@L_618_7@绑定和解除绑定

代码示例
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,请注明来意。