たとえば、UI Bootstrapには、フィールドの値を提案する「typeahead」というディレクティブがあります。要素の色を提案する要素の属性として使用できるディレクティブを作成したいとしましょう。
これは失敗する試みです...
指令:
angular.module('myApp')
.directive('suggestcolors', function () {
return {
compile: function compile(element, attrs) {
attrs.$set("typeahead", "color for color in ['red', 'blue', 'green']");
}
};
});
意見:
<textarea ng-model="foo" suggestcolors></textarea>
テキストエリアを調べると、属性が設定されていますが、何もしません。attrs への変更をリンク関数に移動すると、同じことが起こります。ビューで typehead 属性を直接設定すると、期待どおりに機能します。
<textarea ng-model="foo" typeahead="color for color in ['red', 'blue', 'green']"></textarea>
(ただし、DRY の理由から、この属性を動的に挿入できるようにしたいと考えています。実際の使用例はこれよりも複雑です。)
同様の質問がここで尋ねられましたが(コンパイルステップで ng-click 動作を動的に追加することについて)、直接答えられることはありませんでした。