这些是同一角度控制器中的方法。
问题是 $on 每 n 次点击就会被调用一次。因此,如果这是我第三次单击以显示弹出窗口。$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();
});
有什么想法吗?