Angularjs 将角度模态控制器移动到单独的文件中
我有一个页面控制器在我的网站上,包括几个模态。一些模态控制器正在变得健壮,我想将它们移动到单独的控制器中,而不丢失外部页面控制器的作用域(模态控制器使用一些页面控制器函数和属性)-这可能吗?到目前为止,任何引用外部控制器的东西都会出错。下面是我如何设置它的一个简单示例: 页面控制器:Angularjs 将角度模态控制器移动到单独的文件中,angularjs,controller,Angularjs,Controller,我有一个页面控制器在我的网站上,包括几个模态。一些模态控制器正在变得健壮,我想将它们移动到单独的控制器中,而不丢失外部页面控制器的作用域(模态控制器使用一些页面控制器函数和属性)-这可能吗?到目前为止,任何引用外部控制器的东西都会出错。下面是我如何设置它的一个简单示例: 页面控制器: angular.module('myApp') .controller('outerCtrl', function(MetaService) { var thisCtrl = this; this
angular.module('myApp')
.controller('outerCtrl', function(MetaService) {
var thisCtrl = this;
thisCtrl.someFunction = function() {
//some cool functionality that will elvaluate something
}
function optionsModal() {
var PageCtrl = thisCtrl;
$uibModal.open({
'controller': 'scripts/controllers/optionsModal.js',
'controllerAs': 'ModalCtrl',
'templateUrl': 'views/modals/optionsModal.html',
'size': 'md'
});
}
});
模态控制器:
angular.module('myApp')
.controller('optionsModalCtrl', function(MetaService) {
var modalCtrl = this;
function giveOptions() {
if (PageCtrl.someFunction()) {
//offer some option
} else {
//offer a different option
}
}
});
以下是来自官方页面的信息:
var modalInstance = $uibModal.open({
animation: $scope.animationsEnabled,
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
size: size,
scope: $scope, // pass parent scope to modal instance
resolve: {
items: function () {
return $scope.items;
}
}
});
谢谢,这是有道理的,但似乎对我不起作用。我阅读了链接并尝试了几种不同的方法。似乎必须将作用域附加到他们希望模态控制器能够访问的所有内容上——这不是我想做的事情(我不希望在代码中使用$scope),因此我尝试了
$scope.pageCtrl=pageCtrl
以这种方式传递作用域,但没有成功。为了进行实验,我确实将范围附加到了一些东西上,将范围作为模态的属性传入,但仍然从模态的控制器中得到了错误:(