ngDialog多次打开

时间:2017-04-10 10:43:49

标签: angularjs ng-dialog

第一次点击链接打开对话框时,它只打开一次。但是从第二次开始,它分别在第二次,第三次,第四次点击时打开两次,四次,八次。为什么要多次打开?

Html代码:header.html

<li><a href data-ng-click="chatBotFunction()" chat-bot>Chat</a></li>

JS代码:headerCtrl.js

$scope.chatBotFunction = function() {
    $rootScope.$emit("CallChatMethod",{});
}

chatCtrl.js

$rootScope.$on("CallChatMethod", function(){
    $scope.openChatBox();
});

$scope.openChatBox = function() {
    ngDialog.openConfirm({
        template: 'modules/main/views/chatBot.html',
        controller: 'chatCtrl',
        closeByDocument: false,
        closeByEscape: false,
        showClose: false,
        scope: $scope 
    }).then(

    );  
};

有人请帮我解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:1)

问题是,如果使用$rootScope.$on,即使导航到其他页面,相应的控制器也不会破坏。请尝试使用$scope.$on

$scope.$on("CallChatMethod", function(){
    $scope.openChatBox();
});
  

$ scope。$ broadcast用于从父母发布到子女时   $ scope。$ emit用于从子级发布到父级

如果你仍然遇到问题,请跟我说。

答案 1 :(得分:0)

您需要删除范围销毁事件

上的侦听器
var callChatListener = $rootScope.$on("CallChatMethod", function(){
   $scope.openChatBox();
});

下面的代码将从$ rootscope中删除监听器

$scope.$on("$destroy", function(){
   callChatListener(); 
});