我有一個關於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