我有一个关于angularjs的指令范围的问题。请看看下面的代码:为什么指令的孩子不能读取其指令的范围?
HTML:
<div ng-controller="MyCtrl">
<!-- 1. works: -->
<pre>{{controllerItems}}</pre>
<my-list attr-items="controllerItems">
<!-- 3. works not: -->
<pre>{{directiveItems}}</pre>
<!-- 4. works: -->
<pre>{{controllerItems}}</pre>
</my-list>
</div>
JS:
angular.module('myapp', [])
.controller('MyCtrl', function($scope) {
$scope.controllerItems = [
'A', 'B', 'C', 'D'
];
})
.directive('myList', function() {
return {
restrict: 'E',
transclude : true,
template : '<!-- 2. works: --><pre>{{directiveItems}}</pre><div ng-transclude></div>',
scope : {
directiveItems : '=attrItems'
},
link: function (scope, element, attrs, ctrl) {
//console.log(scope);
}
}
});
我试图做的是创造一个指令,一个自己的范围和所有的孩子。我为范围内的指令创建了一个新的范围:{}并且期望,指令的所有孩子都可以使用它。但我得到的是,3.不知道directiveItems和4.父范围仍然存在。
我的问题:我能做些什么来创建一个带有指令的单独作用域,该指令也适用于所有子元素(如{{}}或其他默认和自定义元素?
你也可以在这里找到代码:http://plnkr.co/edit/kKtGdNt8Jq09zabwVoJo?p=preview
感谢您的帮助!
非常感谢 - 正是我在找的东西! – freps 2014-12-01 20:59:57