将当前控制器实例传递给模态服务

时间:2015-10-03 10:29:27

标签: javascript angularjs service controller instance

我有一个CartController,在showCheckout上执行此操作:

    ModalService.showModal({
        templateUrl: '/Product/CartCheckout',
        controller: 'CartController'
}).then(function (modal) {
        ...
    });

这基于angularModalService.js。我只是传递当前的控制器,因为我不想创建一个新的控制器来处理模态对话框的Open()Close()

但是,仅按名称传递控制器似乎实例化该控制器的新实例。我想将控制器的当前实例传递给服务。我试过了:

   controller: $controller('CartController', $scope)

但我得Unknown provider: $scopeProvider <- $scope <- CartController。 我也试过了:

  controller: $scope.ctrl

但它似乎被忽略而没有抛出任何错误,没有任何反应,对话框从未显示过。

2 个答案:

答案 0 :(得分:1)

我通过修改AngularModalService.js修复了它,如下所示:

var modalScope = $rootScope.$new();

var modalScope = options.controllerScope || $rootScope.$new();

然后将其称为:

        ModalService.showModal({
            templateUrl: '/Product/CartCheckout',
            controller: 'CartController',
            controllerScope : $scope

答案 1 :(得分:0)

scope:可选。如果提供了模式控制器,它将使用新的作用域作为作用域的子级(通过调用scope。$ new()创建),而不是使用新的作用域作为$ rootScope的子级创建。

使用 scope:$ scope (“将当前范围控制器强制为父级”)而不是 controllerScope:$ scope 强制$ rootScope成为父级。 并通过$ scope。$ parent.YOUROBJECTS

访问对象