我有一个指令mydiv
,其中嵌入了另一个指令myspan
。所以我的 index.html 看起来像:
<mydiv></mydiv>
模板mydiv
看起来像:
<div>
<myspan><myspan>
</div>
并且myspan
很简单:
<span>asdf</span>
现在我想myspan
动态地将变量传递给指令,所以我在下面做这样的事情mydiv
:
<div>
<myspan data-text="hello"><myspan>
</div>
并使用指令链接函数将其添加到myspan
控制器作用域(它基本上采用所有“data-*”属性并将它们设置在作用域上):
link: function(scope, elem, attrs){
for(var attr in attrs) {
scope[attr] = attrs[attr];
}
}
最后,myspan
模板如下所示:
<span>{{text}}</span>
它运作良好。
问题
我现在想从模板中添加一个范围变量 from mydiv
to ,所以我执行以下操作:myspan
mydiv
<div>
<myspan data-text="hello" data-scopevar="{{mydivText}}"><myspan>
</div>
但是,这不起作用,并且“{{mydivText}}”在被传递之前从未编译过。我认为这是由于myspan
指令在此之前被mydiv
初始化mydivText
还没有准备好。
问题
- 首先,这是将变量传递到嵌入式指令的正确方法吗?
- 其次,如何将父级范围变量传递给其子级?请注意,我宁愿不必从孩子那里读取 $scope.$parent 等,而是直接以声明方式传递。