将当前控制器实例传递给模态服务
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
访问你的对象
我有一个 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
访问你的对象