一尘不染

如何将范围变量传递给指令的`tAttrrs`对象?

angularjs

好的,所以我想在动态生成的模板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

那么,我该怎么办才能获取范围变量的值而不是原始文本?


阅读 238

收藏
2020-07-04

共1个答案

一尘不染

作用域值不能从指令的templateUrl中访问。这些属性尚未编译,因此无法在此上下文中访问范围。

这是一种可能适合您的解决方法。

见Plunkr

我在这里所做的是使用一个包含ng-include的div的模板,通过双向绑定获取URL。

2020-07-04