我使用controllerAs语法来避免在我的控制器中使用$scope soup,并且还使用ui.bootstrap来呈现模态视图.
我需要打开一个与当前控制器共享的范围的modalInstace.注入范围时,您可能会执行以下操作:
var modalInstance = $uibModal.open({ templateUrl: 'addEditModal.html',scope: $scope });
但是,由于我没有注入范围,并使用controllerAs语法,这将无法正常工作.
从我发现的内容中,您将需要使用resolve来传递数据,但必须通过函数显式传递.有没有办法通过整个范围?
有一些东西我需要做的模式和传递的数据量似乎过度杀伤.
不想这样做,因为它似乎凌乱…
var modalInstance = $modal.open({ templateUrl: 'myModalContent.html',controller: 'ModalInstanceCtrl',resolve: { user: function() { return vm.user; },something: function() { return vm.something; },blah: function() { return blah; } } });
有什么更好的想法?
解决方法
I need to open a modalInstace that shares the same scope as the
current controller.
莫代尔服务creates inherited scope.
var modalInstance = $uibModal.open({ templateUrl: 'addEditModal.html',scope: $scope });
不注入范围但指定模式控制器的父范围(否则,根范围将用作父级).
由于ControllerAs在父控制器上使用,因此模态控制器将可以访问其范围上的继承的vm对象.