Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用controllerAs语法时,将当前作用域传递给modalInstance_Javascript_Angularjs_Twitter Bootstrap_Bootstrap Modal_Ui.bootstrap - Fatal编程技术网

Javascript 使用controllerAs语法时,将当前作用域传递给modalInstance

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

我使用controllerAs语法来避免控制器中出现$scope汤,还使用ui.bootstrap来显示模式视图

我需要打开一个与当前控制器共享相同作用域的modalInstace。注入作用域时,您可能会执行以下操作:

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) {
...
}