Javascript Angularjs-动态模板URL

Javascript Angularjs-动态模板URL,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有一个指令,我希望能够加载一些逻辑上不同的模板 在下面的示例中,“type”是作用域上的一个变量,我希望将其传递给指令,以构建该指令模板的URL <direct type="{{type}}"></direct> var direct = function () { return { restrict: 'E', templateUrl: function(tElement, tAttrs) { console.log(type); ret

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

在下面的示例中,“type”是作用域上的一个变量,我希望将其传递给指令,以构建该指令模板的URL

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

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

var direct=函数(){
返回{
限制:'E',
templateUrl:函数(远程通讯、tAttrs){
console.log(类型);
返回'resources/'+tAttrs.type+'.html';
}
};
};

未计算该类型,但实际字符串“type”正在tAttrs中传递。您知道我可能遗漏了什么吗?

您必须通过直接指令上的隔离作用域来执行此操作

我在这里为大家举了一个例子:

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


作用域{}内的属性名称语法应为大小写,第一个字母为小写。e、 g.typeName,并在指令中指定属性名称,如

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

查看隔离范围,此外,您还可以使用ng switch根据某些值在不同的指令之间切换,也许这就足够了,然后在一些自定义指令中,您可以编写您要加载的特定模板。我不确定这是否得到了修复。。可能必须采取不同的方法唯一的问题是,我想将模板html放在不同的文件中,并根据类型加载特定的文件。在:
templateURL:function(tElement,tAttrs){return type+'.html';}
的行中有一些内容,但我无法获取类型参数。如果您的类型值是预先确定的,那么您可以在ParentController上注册它,或者将数据模型放在服务器上,然后使用依赖项注入来获取参数。这样你也许可以连接到一个模板,但我不知道你的上下文,所以这只是我的一个提示,希望能有所帮助。