【发布时间】:2014-03-29 08:05:38
【问题描述】:
如何在指令的链接函数中包含模板 URL?我正在尝试做这样的事情:
app.directive('something', function($compile,$timeout) {
return: {
link: function(scope,element,attrs) {
var htmlText = ???? // HOW TO INCLUDE A TEMPLATE URL HERE??
$compile(htmlText)(scope, function(_element,_scope) {
element.replaceWith(_element);
});
},
}
});
当我搜索时,我了解到 Angular 指令可以使用 templateUrl。但我试图将 html 代码存储到一个变量中,该变量位于 link 内,最终被编译。通常对于小代码,我只需将 HTML 内联输入到var htmlText。但是如果我有很多代码,我想将其保存到一个单独的 html 文件中,然后为该变量调用它(如上面示例中所示)。所以我的问题是
1) 如何为link 中的变量添加指向模板URL 的链接?
2) 添加url路径时,是添加index.html文件所在的相对路径还是该指令文件所在的路径?
【问题讨论】:
-
我不太明白你为什么不能使用
templateUrl属性?transclude和异步获取模板曾经存在一些问题,但据我所知,这些问题已在较新的版本中得到解决。 -
据我了解,如果模板依赖于范围数据,我认为 templateURL 属性不会起作用。
-
似乎在这里工作:plnkr.co/edit/9NCSytGVEc4tJaIGjnGv?p=preview 但如果指令的范围不是孤立的,可能会有问题?`我以前从未听说过这是一个问题。
-
很好的例子......是的,它似乎在孤立的范围内工作得很好。但是当我将它作为
scope=false时,它不起作用。我会更多地研究这个并玩一下..谢谢你展示这个。 :)
标签: javascript angularjs angularjs-directive angularjs-scope angularjs-ng-include