另一个指令和传递属性的templateUrl中的指令

时间:2016-02-10 12:17:33

标签: angularjs angularjs-directive angularjs-scope angular-directive

我有两个指令,我试图在另一个指令的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)我将范围变量的值作为属性传递给子指令。

1 个答案:

答案 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时,子指令可以强制刷新。

如果不适合您,请告诉我,我会发布部分代码,以防它有用。