我有两个指令,我试图在另一个指令的templateUrl中使用某个属性调用一个指令,但是我无法在第二个指令中获取已编译的属性值。代码是这样的:
第一条指令
app.directive('myDir', function() {
return {
link: function(scope, element, attrs, controller) {
scope.myVal='hello';
},
templateUrl: 'directive1.html',
scope: {}
}
directive.html
<div>
<child-dir attrval="{{myVal}}"></child-dir>
<div>
第二指令
app.directive('childDir', function() {
return {
templateUrl: template(element,attrs) {
alert(attrs.attrval);
},
scope: {}
}
此处, attrs.attrval 就像这样 {{myVal}} 。 但我想要值你好。谁能帮我? 请注意两件事:
1)我正在使用templateUrl。 2)我将范围变量的值作为属性传递给子指令。
答案 0 :(得分:0)
我遇到了同样的问题并最终找到了解决方案(可能不是最好的,但它对我有用)。你的例子与我的有点不同,但我想你的例子是:
父指令和directive.html等于,但是儿童指令:
app.directive('childDir', function() {
return {
templateUrl: template(element,attrs) {
attrs.$observe("attrval", function(){
alert(attrs.attrval);
});
},
scope: {}
}
在父指令中设置模板时,尚未设置该值,但是child指令正在尝试使用它。使用&#39; observe&#39;,当真正设置了attrval时,子指令可以强制刷新。
如果不适合您,请告诉我,我会发布部分代码,以防它有用。