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