Javascript 使用controllerAs语法时,将当前作用域传递给modalInstance
我使用controllerAs语法来避免控制器中出现$scope汤,还使用ui.bootstrap来显示模式视图 我需要打开一个与当前控制器共享相同作用域的modalInstace。注入作用域时,您可能会执行以下操作:Javascript 使用controllerAs语法时,将当前作用域传递给modalInstance,javascript,angularjs,twitter-bootstrap,bootstrap-modal,ui.bootstrap,Javascript,Angularjs,Twitter Bootstrap,Bootstrap Modal,Ui.bootstrap,我使用controllerAs语法来避免控制器中出现$scope汤,还使用ui.bootstrap来显示模式视图 我需要打开一个与当前控制器共享相同作用域的modalInstace。注入作用域时,您可能会执行以下操作: var modalInstance=$uibModal.open({ templateUrl:'addEditModal.html', 范围:$scope }); 然而,由于我没有注入作用域,并且使用controllerAs语法,这将不起作用 根据我的发现,您需要使用resol
var modalInstance=$uibModal.open({
templateUrl:'addEditModal.html',
范围:$scope
});
然而,由于我没有注入作用域,并且使用controllerAs语法,这将不起作用
根据我的发现,您需要使用resolve来传递数据,但必须通过函数显式传递数据。有办法通过整个范围吗
在这种模式下,我需要做很多事情,传递大量数据似乎有些过头了
我不想这样做,因为看起来很乱
var modalInstance=$modal.open({
templateUrl:'myModalContent.html',
控制器:“ModalInstanceCtrl”,
决心:{
用户:函数(){
返回vm.user;
},
某物:函数(){
归还某物;
},
废话:函数(){
返回废话;
}
}
});
还有更好的主意吗
我需要打开一个modalInstace,它与
电流控制器
联运服务。及
不注入作用域,但指定模态控制器的父作用域(否则根作用域将用作父作用域)
由于在父控制器上使用了controllerAs,模态控制器将有权访问其作用域上继承的
vm
对象。不确定我是否理解正确,但我通过在resolve参数中传递/注入当前的“controllerAs”使其工作
var modalInstance = $uibModal.open({
templateUrl: 'addEditModal.html',
controller: 'AudioItemAddEditCtrl as vm',
resolve: {
parent: function(){
return vm
}
}
});
然后,在AudioItemAddEditCtrl中
var AudioItemAddEditCtrl = function(parent, AudioItemService, $ModalInstance) {
...
}
然后我可以使用“parent”直接访问父控制器作用域
希望这对其他人有所帮助。此解决方案需要将$scope注入控制器。这就是我们试图避免的。@Bendim在回答中说,它不注入作用域,而是为模态控制器指定父作用域。在某些服务中,它可以是控制器的
$scope
或scope=$rootScope.$new()
作用域$uibModal
就是这样设计的。“我们”是谁?如果你有类似的问题,请随意发布一个反映你具体情况的问题。答案似乎是一半。然后必须将$scope注入模态控制器,然后才能以$scope.ControllerName的形式访问父范围变量。variable@nuander答案直接回答了这个问题,并不是一个循序渐进的教程。这是即时级别的主题,我假设读者已经知道$scope应该被注入控制器以便使用。但谢谢你的有用评论,希望这能帮助一些人。我认为值得一提的是,使用controller作为语法,你不必总是注入$scope
var AudioItemAddEditCtrl = function(parent, AudioItemService, $ModalInstance) {
...
}