2

这些是同一角度控制器中的方法。

问题是 $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();
    });

有什么想法吗?

4

0 回答 0