ngDialog 多次打开

ngDialog opening multiple times

第一次点击link打开对话框时,它只打开了一次。但从第二次开始,分别是第二次、第三次、第四次点击打开两次、四次、八次。为什么会多次打开?

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(

    );  
};

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

问题是,如果您使用 $rootScope.$on,即使您导航到其他页面,相应的控制器也不会销毁。所以试试 $scope.$on

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

$scope.$broadcast is for when publishing from parent to child
$scope.$emit is for when publishing from child to parent

如果您仍然遇到问题,请告诉我。

您需要移除作用域销毁事件的侦听器

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

下面的代码将从 $rootscope

中删除侦听器
$scope.$on("$destroy", function(){
   callChatListener(); 
});