元のコンテンツをトランスクルージョンして解析し、元のコンテンツの情報を使用して新しいコンテンツを構築するディレクティブがあります。その要点は次のようになります。
.directive('list', function() {
return {
restrict: 'E',
transclude: true,
templateUrl: '...',
scope: true,
controller: function($scope, $element, $attrs, $transclude) {
var items;
$transclude(function(clone) {
clone = Array.prototype.slice.call(clone);
items = clone
.filter(function(node) {
return node.nodeType === 1;
})
.map(function(node) {
return {
value: node.getAttribute('value')
text: node.innerHTML
};
});
});
// Do some stuff down here with the item information
}
}
});
次に、次のように使用します。
<list>
<item value="foo">bar</item>
<item value="baz">qux</item>
</list>
これはすべてこのようにうまく機能します。ng-repeat
この問題は、次のようにディレクティブ コンテンツ内で使用しようとすると発生します。
<list>
<item ng-repeat="item in items" value="{{ item.value }}">{{ item.text }}</item>
</list>
これをしようとすると、アイテムがありません。なぜこれが機能しないのか、または同じ種類のことを達成するためのより良い方法があるかどうかは誰にも分かりますか?