【发布时间】:2025-12-20 06:00:17
【问题描述】:
我对 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);
}
}
});
我试图做的是为指令及其所有子项创建一个自己的范围。我使用 scope : { } 为指令创建了一个新范围,并且预期该指令的所有子级都可以使用它。但我得到的是,3. 不知道 directiveItems 并且在 4. 中,父范围仍然存在。
我的问题:如何使用指令创建单独的范围,该指令也适用于所有子元素,如 {{ }} 或其他默认和自定义元素?
您也可以在这里找到代码:http://plnkr.co/edit/kKtGdNt8Jq09zabwVoJo?p=preview
感谢您的帮助!
【问题讨论】:
标签: javascript angularjs angularjs-scope angular-directive