Javascript 如何将控制器链接到AngularJS中的指令?
假设我有以下Javascript 如何将控制器链接到AngularJS中的指令?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,假设我有以下HTML结构: <div ng-app="testApp"> <div ng-controller="controller1"> {{controller1}} </div> <div ng-controller="controller2"> {{controller2}} </div> <div ng-controller="controller
HTML
结构:
<div ng-app="testApp">
<div ng-controller="controller1">
{{controller1}}
</div>
<div ng-controller="controller2">
{{controller2}}
</div>
<div ng-controller="controller3">
{{controller3}}
<test-directive></test-directive>
</div>
</div>
$scope
现在保存来自ng controller=“controller3”
的数据。
如何将自定义控制器链接到它?因此,相反,指令传递其父控制器,我也要传递例如controller1的数据
我必须能够将任何控制器传递给它,因为指令依赖于给定控制器中的数据
我无法更换所需控制器内的
这是一把你可以玩的小提琴
var ang=angular.module('testApp',[]);
控制器(“控制器1”,控制器1);
功能控制器1($scope){
$scope.controller1=“controller1”;
}
控制器(“控制器2”,控制器2);
功能控制器2($scope){
$scope.controller2=“controller2”;
}
控制器(“控制器3”,控制器3);
功能控制器3($scope){
$scope.controller3=“controller3”;
}
指令(“testDirective”,function()){
返回{
限制:“AE”,
链接:功能(范围、要素、属性){
console.log(范围);
},
模板:“我返回$scope.controller3”
}
});代码>
{{controller1}}
{{controller2}}
{{controller3}}
我在玩更新中看到的控制器
,并阅读了这篇文章。我提出了以下解决方案
那么如何将任何控制器
传递给指令
?
- 首先必须将
范围
与范围{}
- 使用
控制器:“@”
在指令内设置控制器属性。现在,您可以通过下一步为其赋值
- 设置属性
名称:“控制器”
。我将在下面解释如何使用它
有人告诉我,隔离范围是必要的,但是没有隔离范围也行。
如果您现在放置指令
,您现在可以通过执行以下操作为其分配任何控制器:
查看-您需要访问$scope.$parent
感谢您的帮助。我不能使用$parent
。它不是那么简单。因为控制器可以位于页面上的任何位置。此外,如果查看代码段,您可以看到$parent
不包含任何控制器
数据。据我所知。哦,我以为它们是嵌套的。因此,您不能从controller3
传递controller1
,因为它们的作用域完全不同,您可以使用$rootScope
,我不推荐使用,但您可以使用工厂-如果有帮助,请告诉我,我会复制您的。谢谢您的回复,我熟悉的问题链接。但这与控制器之间或任何类型的共享数据无关。我需要的是一些$scope
变量。例如:$scope.data
。所以我想要的是,当你调用指令时,你给它指定一个控制器
,它有$scope.data
。指令取决于该变量。我是否无法执行类似于controller=“controller1”
?请参阅更新的问题。解释了真实情况。
ang.directive("testDirective", function() {
return {
restrict: 'AE',
link: function (scope, elem, attrs) {
console.log(scope);
},
template: "<h3>I return $scope.controller3</h3>"
}
});