Angularjs angular-获取服务中的控制器实例

Angularjs angular-获取服务中的控制器实例,angularjs,angular-ui,bootstrap-modal,angularjs-controller,Angularjs,Angular Ui,Bootstrap Modal,Angularjs Controller,我遇到问题,我正在尝试在我的服务中获取控制器实例: myAppModule.service('modalService', function ($modal, $controller) { var controller = $controller('ExperienceDetailsModalCtrl'); }); 但我有个错误: TypeError:无法读取未定义的属性“$scope” 是否可以访问控制器(在另一个文件中定义)并将其传递给modal 我的控制器: myAppIndexM

我遇到问题,我正在尝试在我的服务中获取控制器实例:

myAppModule.service('modalService',
function ($modal, $controller) {
   var controller = $controller('ExperienceDetailsModalCtrl');
});
但我有个错误: TypeError:无法读取未定义的属性“$scope”

是否可以访问控制器(在另一个文件中定义)并将其传递给modal

我的控制器:

myAppIndexModule
.controller('ExperienceDetailsModalCtrl', function ($scope) {

});

您无法访问
服务
工厂
提供商
中的控制器作用域。您想要共享的数据应该放在服务中使其可供其他控制器使用

我认为您确实希望将控制器范围传递给
$modal
,然后您可以通过从控制器本身进行传递来实现这一点

$modal.open({$scope: $controller('ExperienceDetailsModalCtrl', {$scope: $scope}), templateUrl: 'abc.html'})
更新

你可以像下面这样做

myAppModule.service('modalService',
function ($modal, $controller, $rootScope) {
   var scope = $rootScope.$new(true);
   $controller('ExperienceDetailsModalCtrl',{scope: $scope });
   //in scope now you will have ExperienceDetailsModalCtrl scope
});

为什么要访问服务中的控制器??一般来说,这是控制器使用服务的一种方式,也就是说,服务的目标是向控制器提供服务。我想在一个地方定义我的所有模态-我想避免每次打开模态时都传递控制器名称和模板。所以我认为为modals创建服务和函数是个好主意。就是这样。也许有人会建议我一个更好的方法来做这件事?那很好。但我想用不同的方式来做。我想在一个地方定义我的所有模态——我想避免每次打开模态时都传递控制器名称和模板。所以我认为为modals创建服务和函数是个好主意。你能给我一个建议,如何建造它吗?@Theo试试我最新的答案,它的建议可能不太管用!它工作(几乎:)。当我这样定义我的控制器时:controller('ExperienceDetailsModalCtrl',function()。但是当我这样定义它时:controller('ExperienceDetailsModalCtrl',function($scope)-[使用$scope]我遇到一个异常:未知提供程序:$scopeProvider,但您能阅读上面的评论吗?它几乎可以工作-我更新了我的问题-添加了控制器代码。当我尝试注入$scope时,它不工作-异常:未知提供程序:$scopeProvider