好的,所以我想在动态生成的模板url中使用作用域变量。所以我尝试了这个:
html
<my-directive type="{{ type }}"></my-directive>
js
angular.module('myApp', []) .directive('myDirective', function () { return { templateUrl: function (tElement, tAttrs) { return 'templates/myDirective.' + tAttrs.type + '.html'; }; }; });
我原本希望tAttrs.type返回的值$scope.type,但最终却得到了{{ type }}。结果导致templateUrl为templates/myDirective.{{ type }}.html。
tAttrs.type
$scope.type
{{ type }}
templates/myDirective.{{ type }}.html
那么,我该怎么办才能获取范围变量的值而不是原始文本?
作用域值不能从指令的templateUrl中访问。这些属性尚未编译,因此无法在此上下文中访问范围。
这是一种可能适合您的解决方法。
见Plunkr
我在这里所做的是使用一个包含ng-include的div的模板,通过双向绑定获取URL。