我有一个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
但它似乎被忽略而没有抛出任何错误,没有任何反应,对话框从未显示过。
答案 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
访问对象