我的主控制器中有一个范围,然后我将一个隔离范围输入到我的链接功能中。有没有办法从我的链接功能访问主范围?这是我正在尝试做的简化版本:
角:
angular.module('root', [])
.controller('index', ['$scope', function($scope){
$scope.messages = ["Hello", "Howdy", "What's up"]
}
.directive('myDirective', function() {
return {
restrict: 'E',
scope: { greeting: '=' },
link: function(scope, element, attrs) {
var greeting = scope.greeting; //one message from the array, fed in by <my-directive greeting='message'> from index.html
var length = scope.messages.length; //length of whole messages array
//do stuff
}
}
}
HTML:(index.html)
<body ng-app='root' ng-controller='index'>
<div ng-repeat='message in messages'>
<my-directive greeting='message'></my-directive>
</div>
</body>
我希望能够从我的链接功能访问有关整个消息数组的消息和“元”信息。但是,现在我只能访问消息(var greeting),但长度变量不会评估。 有没有办法以角度来做这个?
如果您需要任何其他说明,请与我们联系!
答案 0 :(得分:1)
关于隔离范围的规则非常简单,但很难从Angular文档中理解。
如果省略指令声明中的scope:
属性,该指令将与其父级共享范围。换句话说,它可以直接访问调用它的控制器的范围及其所有变量。
更好的做法是将必要的变量传递到隔离范围,您已经使用greetings
变量进行隔离范围。您的范围可能如下所示。
scope: {
greeting: '=',
messages: '='
}
然后写下这样的指令:
<my-directive greeting='message' messages='messages'></my-directive>
只要您的控制器中定义了$scope.message
和$scope.messages
,您就可以全部设置。