我有一个指令,我希望能够在某些逻辑上加载不同的模板。
在下面的示例中,'类型'是范围的变量,我想传递给指令以构建指令模板的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。你知道我可能会错过什么吗?
答案 0 :(得分:0)
您必须通过直接指令的隔离范围来执行此操作。
我在这里为你做了一个例子:http://jsbin.com/lagez/1/edit
您可以在示例链接中看到,您必须在范围内指定要在指令范围内读取的属性:{attributeName:'@'}
范围内的属性名称语法:{}应该是驼峰式,首字母小。例如typeName,并在指令中指定属性名称,如
答案 1 :(得分:0)
您遇到的问题是,当评估templateUrl时,没有将该值绑定到的范围,因此它返回属性的实际字符串内容 - 而不是内插值期望的。