在templateUrl中使用HTML文件的一部分

时间:2014-02-08 08:38:03

标签: javascript html angularjs angularjs-directive

有没有办法只使用文件的一部分作为指令的templateUrl?例如,如果我有一个文件

<input type="text" data-name="first-name" />

<input type="text" data-name="last-name" />

<input type="text" data-name="address" />

etc.

是否有一种方法可以让Angular只提取“名字”input标记或仅提取“姓氏”input标记,而不是使用整个文件?

我希望能够将多个指令的HTML内容作为单个HTML文件,因为只有一行代码似乎浪费了一个文件(UNIX哲学有其局限性)。另外,我可能希望将这些templateUrl文件连接起来作为我的缩小过程的一部分,我想知道Angular不会为每个指令使用整个文件。

2 个答案:

答案 0 :(得分:1)

没有办法只使用模板网址的一部分;整个事情被拉入并编译。

对于简短的模板,我发现在使用指令对模板进行衬里可能是最佳实践。当它只有一点点html时,上下文切换的减少往往是值得的,imo。

可以通过更改

中的标记来完成
templateUrl: 'foo.html' 

template: '<input type="text" data-name="address" />' 

希望有所帮助!

答案 1 :(得分:0)

AngularUI具有此功能。在UI-Utils包中,有ui-include指令。这与ng-include指令完全相同,只是它允许一个额外的属性fragment,它包含页面的一部分而不是整个页面。

AngularUI UI-Utils页面上的示例代码演示得非常好:

<ui-include src="'my/url/to/partial/file'" fragment="'#id-to-fragment'"></ui-include>
<!-- Don't forget to quote string literals! -->
<!-- Don't forget to include jQuery if you need full selector support! -->

当然,你可能已经包含了jQuery。 :)