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

Pass current controller instance to modal service

本文关键字:模态 服务 实例 控制器      更新时间:2023-09-26

我有一个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:可选。如果提供了,模态控制器将使用一个新的作用域作为作用域的子作用域(通过调用scope.$new()创建),而不是作为$rootScope的子作用域创建。

使用scope: $scope("强制当前范围控制器为父")而不是controllerScope: $scope强制$rootScope为父级。$parent. youobjects