这些是同一角度控制器中的方法。
问题是每n次点击就会调用$ on。所以,如果这是我第三次点击显示弹出窗口。 $ on将运行3次,$ broadcast将播放一次。
我正试图杀死$ scope,但它没有用。看起来控制器(也在对话框中初始化,不会被破坏。
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();
});
有什么想法吗?