Передать текущий экземпляр контроллера модальной службе

0

У меня есть 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

Но это просто игнорируется без каких-либо ошибок, ничего не происходит, и диалог никогда не отображается.

Теги:
instance
controller
service

2 ответа

1
Лучший ответ

Я исправил его, изменив AngularModalService.js следующим образом:

var modalScope = $rootScope.$new();

в

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

И затем называя это как:

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

сфера применения: необязательно При наличии модальный контроллер будет использовать новую область видимости в качестве дочернего элемента области видимости (созданного путем вызова scope. $ New()), а не новую область видимости, созданную в качестве дочернего элемента объекта $ rootScope.

используйте scope: $ scope ("чтобы заставить текущий контроллер области быть родительским"), а не controllerScope: $ scope, который заставляет $ rootScope быть родительским. и получить доступ к вашим объектам через $ scope. $ parent.YOUROBJECTS

Ещё вопросы

Сообщество Overcoder
Наверх
Меню