例如,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>
当我检查 textarea 时,该属性已设置,但它没有做任何事情。如果我将更改对 attrs 移动到链接函数,也会发生同样的事情。直接在视图中设置 typeahead 属性按预期工作:
<textarea ng-model="foo" typeahead="color for color in ['red', 'blue', 'green']"></textarea>
(但出于 DRY 的原因,我希望能够动态插入此属性。我的实际用例比这更复杂。)
这里提出了一个类似的问题(关于在编译步骤中动态添加 ng-click 行为),但从未直接回答。