如果我有两个指令,并且需要让其中一个使用另一个指令的控制器,那么在角度中完成类似的操作的最佳方法是什么?我正在尝试使用我在文档中看到的require: otherDirective
内容,但我得到的是
错误:无控制器:dirOne
来自以下示例。我的印象是,通过在require语句中指定dirOne,dirTwo可以访问dirOne的控制器。我在这做错了什么?
var app = angular.module('myApp', []); app.directive('dirOne', function() { return { controller: function($scope) { $scope.options = { "opt1" : true, "opt2" : false, "opt3" : false, } this.getOptions = function() { return $scope.options; }; } }; }); app.directive('dirTwo',function() { return { require: 'dirOne', link: function(scope, element, attrs, dirOneCtrl) { $scope.options = dirOneCtrl.getOptions(); alert($scope.options); } }; });
答案 0 :(得分:2)
你的傻瓜有两个问题:
为了使指令要求另一个指令的控制器,这两个指令必须在同一个元素上,或者如果使用^表示法,则必需的指令可以在父元素上。
<div dir-one dir-two></div>
此外,在第二个指令中,您调用了参数&#34; scope&#34;但后来尝试将其用作&#34; $ scope&#34;。
link: function(scope, element, attrs, dirOneCtrl) {
scope.options = dirOneCtrl.getOptions();
alert(scope.options);
}