Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ModalService$on&$广播多个实例_Angularjs_Angularjs Scope_Angular Broadcast - Fatal编程技术网

Angularjs ModalService$on&$广播多个实例

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",

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

问题是,每点击n次,就会调用$on。如果这是我第三次点击显示弹出窗口。$on将运行3次,$on将广播一次

我试图杀死$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();
    });

有什么想法吗?

如果您在同一个控制器中,而不是使用$rootScope。$broadcast,那么让您的initListener成为一个函数并从模式解析调用它是否更有意义呢?您确实应该避免使用$rootScope。$broadcast。我正在加载另一个视图,但使用的是同一个控制器(相同的操作)。有一点不同,控制器“ShopActionController”显示在产品概述中,但也显示在弹出窗口中。如果可以使用相同的操作,showModal使用什么?角度引导?