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();
});
第一次点击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();
});