Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 如何将控制器链接到AngularJS中的指令?_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

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>"
    }
});