我试图找到最佳方法来动态创建使用指令创建的元素的子内容。
举个简单的例子,假设我有一个指令,它创建一个基本的 div
子元素。
<div mydirective></div>
导致
<div mydirective><div></div></div>
该指令可能类似于:
angular.module('demo', [])
.directive('mydirective', function() {
return {
restrict: 'A',
template: '<div></div>'
}
})
如果我想创建一个“扩展”,使内部的div
变为蓝色,因为我不知道未来需要哪些扩展,所以我不想切换模板或绑定任何特定属性。
我不知道这些有哪些可能性,或者正常的方法是什么... 但是您能否:
1)向父元素添加另一个指令(类似于 css),即
<div mydirective mybluedirective></div>
我的bluedirective指令在哪里寻找内部div并操纵它?
或者
2)您可以在模板中动态包含指令,例如:
<div mydirective subdirective="mybluedirective"></div>
angular.module('demo', [])
.directive('mydirective', function() {
return {
restrict: 'A',
template: '<div [[[THE SUBDIRECTIVE PROPERTY FROM SCOPE??]]></div>'
}
})
有没有一种方法可以在预编译阶段拦截并注入指令?
第三个选项是使用工厂和继承类来为指令执行工作,但这似乎太过复杂。
我猜应该有一个我不知道的简单方法,任何建议都将不胜感激。
编辑:
我认为我正在尝试动态修改模板以在编译之前使用另一个指令。
mybluedirective
- 当它在另一个指令(mydirective)中编译时,我该如何将值绑定到指令(mybluedirective)的控制器上 - 是否有一种引用特定控制器的方法? - sambomartin