<double>
<h1>Hello World - 2</h1>
</double>
<ntimes repeat=10>
<h1>Hello World - 10</h1>
<h4>More text</h4>
</ntimes>
以下のディレクティブは、 タグ<double>, </double>, <ntimes ...>
と</ntimes>
タグを削除します。
var app = angular.module('app', []);
app.directive('double', function() {
return {
restrict: 'E',
compile: function(tElement, attrs) {
var content = tElement.children();
tElement.append(content.clone());
tElement.replaceWith(tElement.children());
}
}
});
app.directive('ntimes', function() {
return {
restrict: 'E',
compile: function(tElement, attrs) {
var content = tElement.children();
for (var i = 0; i < attrs.repeat - 1; i++) {
tElement.append(content.clone());
}
tElement.replaceWith(tElement.children());
}
}
});
フィドル
テンプレート DOM 操作のみが必要と思われるため、リンク関数ではなくコンパイル関数を使用しました。
更新: ntimes compile 関数のこの実装の方が気に入っています。
compile: function(tElement, attrs) {
var content = tElement.children();
var repeatedContent = content.clone();
for (var i = 2; i <= attrs.repeat; i++) {
repeatedContent.append(content.clone());
}
tElement.replaceWith(repeatedContent);
}