打开Angular UI模式时,监视函数会累积

时间:2018-01-09 22:44:26

标签: angularjs angularjs-directive angular-ui-bootstrap angular-ui

我在指令中有以下代码。该指令包含在Angular UI模式中:

var watchObjects = function(){
        scope.vars.forEach(function(elem,i){
            scope.$watch('vars['+i+'].obj', function(newValue, oldValue) {
                if (typeof newValue === 'undefined')
                    return;
                console.log(newValue)
            });
        });
    };

当打开模态并加载指令时,在链接函数中,我只在第一次打开模态时调用watchObjects 。如果每次打开模态时都调用watchObjects,则监视函数的数量开始累积(而不是在对象更改时调用一次,函数被调用N次,其中N表示模式打开的次数) )。为什么会这样?当模态关闭时,观察者不应该被摧毁吗?如果没有,有没有办法手动摧毁观察者?

更新

注册$on以接收广播消息时遇到同样的问题。我需要在第一次打开模态时运行watchCancel,否则将收到N次消息。

 var watchCancel = function(){  // I need to invoke this function only once
    scope.$on("cancel",function(event,data){
        alert("cancelled");
    });
 };

0 个答案:

没有答案