如何在angularjs自定义指令中获取模板中的属性值?

时间:2015-05-21 13:51:56

标签: javascript angularjs

我试图将“abc”的属性定义为angularjs中的自定义指令:

<div abc="user">
    Access granted!
</div>

然后使用自定义指令更改div中的文本:

.directive('abc', function() {
  var attr;
  return {
    link: function (scope, element, attributes) {
      attr = attributes.abc;
      console.log(attr);
    },
    template: "" + attr
  };
});

结果应为'user',但未定义,因为attr在执行模板时未定义。那么,任何可能的帮助如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

您无法使用从属性加载的动态编辑模板,您必须使用范围才能更新模板

template: '<div> {{abc}} </div>', // here it's scope.abc
link : function (scope, elem, attr) {
    scope.abc = attr.abc;
}

答案 1 :(得分:1)

你可以这样做:

.directive('abc', function() {

  return {
    scope: {
       attr: '=abc'
    },
    link: function (scope) {
      console.log(scope.attr);
    },
    template: "" + attr
  };
});

答案 2 :(得分:1)

您必须扩展范围并在范围中添加属性“attr”

scope: {
   attr: '=abc'
}

然后从html中你可以像这样定义你的属性

<div abc attr="user">
    Access granted!
</div>