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

Pass current controller instance to modal service

我有一个 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

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

我已经通过如下修改 AngularModalService.js 修复了它:

var modalScope = $rootScope.$new();

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

然后将其命名为:

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

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

的子作用域创建的新作用域

使用scope: $scope ("to enforce the current scope controller to be the parent") 而不是 controllerScope : $scope 强制 $rootScope 成为父级。 并通过 $scope.$parent.YOUROBJECTS

访问你的对象