Angularjs ModalService$on&$广播多个实例
这些是同一角度控制器中的方法 问题是,每点击n次,就会调用$on。如果这是我第三次点击显示弹出窗口。$on将运行3次,$on将广播一次 我试图杀死$scope,但它不起作用。控制器(也在对话框中初始化)似乎没有被破坏Angularjs ModalService$on&$广播多个实例,angularjs,angularjs-scope,angular-broadcast,Angularjs,Angularjs Scope,Angular Broadcast,这些是同一角度控制器中的方法 问题是,每点击n次,就会调用$on。如果这是我第三次点击显示弹出窗口。$on将运行3次,$on将广播一次 我试图杀死$scope,但它不起作用。控制器(也在对话框中初始化)似乎没有被破坏 ModalService.showModal({ templateUrl: "ProductPopup.html", controller: "ShopActionDialogController",
ModalService.showModal({
templateUrl: "ProductPopup.html",
controller: "ShopActionDialogController",
inputs: {
CurrentProduct: response.data[0]
}
}).then(function (modal) {
modal.element.modal();
args = {};
$rootScope.$broadcast('init', args);
// $rootScope.$broadcast('init', args);
modal.element.on('hidden.bs.modal', function (e) {
// modal.element.remove();
});
modal.close.then(function (result) {
//modal.element.remove();
//ModalService.closeModals();
});
});
});
}
var initListener = $scope.$on('init', function (event,args) {
if (!$scope.initiated) {
$scope.Amount = args.Amount;
$scope.InitAmount = args.Amount;
$scope.ProductId = args.ProductId;
$scope.ProductVariantId = args.ProductVariantId;
$scope.OrderLineId = args.OrderLineId;
switch (args.Action)
{
case 'BuyImmediate':
$scope.AddToCart();
break;
}
}
});
$scope.$on('$destroy', function () {
console.log("killing this scope");
initListener();
});
有什么想法吗?如果您在同一个控制器中,而不是使用$rootScope。$broadcast,那么让您的initListener成为一个函数并从模式解析调用它是否更有意义呢?您确实应该避免使用$rootScope。$broadcast。我正在加载另一个视图,但使用的是同一个控制器(相同的操作)。有一点不同,控制器“ShopActionController”显示在产品概述中,但也显示在弹出窗口中。如果可以使用相同的操作,showModal使用什么?角度引导?