第一次点击链接打开对话框时,它只打开一次。但是从第二次开始,它分别在第二次,第三次,第四次点击时打开两次,四次,八次。为什么要多次打开?
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(
);
};
有人请帮我解决这个问题。提前谢谢。
答案 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();
});