text()
それ自体をテンプレートに置き換え、置き換えられたバージョンにコピーするカスタム ディレクティブを作成しようとしています。
なぜ使用しないのng-transclude
ですか?ディレクティブ内に HTML がなく、コピーしたいテキストだけであることを考えると、これはやり過ぎです。また、別の HTML 要素も作成しますが、これは少し無駄です。
問題は、テンプレートがある場合、Angular がテンプレートを渡すことで$element
あり、元のコンテンツにアクセスする方法がわかりません。値が属性内ではなく要素のコンテンツ内にあるため、バインディングも機能しません。
指令:
angular.module('ui', [])
.directive('foo',
function() {
return {
restrict: 'E',
replace: true,
template: '<p>Insert here</p>',
compile: function(element, attrs) {
console.log('compile time text: ' + element.text());
return function($scope, element, attrs) {
console.log('link time text: ' + element.text());
};
}
}
});
使用法:
<div ng-app="ui">
<foo>This should be copied</foo>
</div>