我有一个使用控制器(例如ctrl1)的局部视图,但在该局部视图中我还有一个带有自己的templateURL的指令,我想将特定逻辑从ctrl1移动到指令的控制器但是在ctrl1中保留一些常量或通用逻辑(对于其他指令)。
这可能吗?
非常总结的近似方法:
CTRL1: -一个 -b -c
ctrl1 - > CTRL2:
CTRL1: -a
CTRL2: -b -c
详细举例:
CTRL1:
var ctrl1 = angular.module("MyModule1", []);
ctrl1.controller("MyCtrl1", function($scope){
$scope.a = 1;
$scope.test = function(){
//whatever
};
$scope.secondtest = function(){
//whatever again
};
});
将一些逻辑移到ctrl2(指令控制器)之后,控制器是:
CTRL1:
var ctrl1 = angular.module("MyModule1", []);
ctrl1.controller("MyCtrl1", function($scope){
$scope.a = 1;
$scope.test = function(){
//whatever
};
});
指令:
var direc = angular.module("MyModule2", []);
direc.directive("MyDirective", function(){
return{
controller: function($scope){ //This is what I called ctrl2 previously
$scope.secondtest = function(){
//whatever again
};
},
templateURL: 'partials/dialog/userdata.html'
}
});
在指令中我仍然想使用函数" $ scope.test",或" $ scope.a"变量和第二个测试函数可以访问该数据,也许它必须查询" $ scope.a"
的值提前致谢。
答案 0 :(得分:1)
如果我理解正确您需要的是访问父范围。您可以使用子控制器中的$ scope。$ parent。
无论如何,正如你所说,你想要常见的逻辑或常量,听起来你需要使用可以从每个控制器访问的服务(单例)。
EDITED:在看到你的代码之后,在这种情况下,指令使用与封闭控制器相同的范围,因为$ scope.test()或$ scope.a应该从指令中工作。