Angularjs - 动态模板URL

时间:2014-04-07 20:41:37

标签: javascript angularjs angularjs-directive

我有一个指令,我希望能够在某些逻辑上加载不同的模板。

在下面的示例中,'类型'是范围的变量,我想传递给指令以构建指令模板的URL。

<direct type="{{type}}"></direct>

var direct = function () {
  return {
  restrict: 'E',
  templateUrl: function(tElement, tAttrs) {
    console.log(type);
    return 'resources/' + tAttrs.type + '.html';
  }
 };
};

该类型未被评估,而是实际的字符串&#39;类型&#39;正在通过tAttrs。你知道我可能会错过什么吗?

2 个答案:

答案 0 :(得分:0)

您必须通过直接指令的隔离范围来执行此操作。

我在这里为你做了一个例子:http://jsbin.com/lagez/1/edit

您可以在示例链接中看到,您必须在范围内指定要在指令范围内读取的属性:{attributeName:'@'}

范围内的属性名称语法:{}应该是驼峰式,首字母小。例如typeName,并在指令中指定属性名称,如

答案 1 :(得分:0)

您遇到的问题是,当评估templateUrl时,没有将该值绑定到的范围,因此它返回属性的实际字符串内容 - 而不是内插值期望的。