0

我正在开发一个主要使用 Angular JS 1.0.2 编写的登录页面。升级到更高版本可能不会,至少不会马上。它工作正常,但我们正在尝试进行一些优化。对于一些背景知识,我们为页面上的各种模式窗口和其他自定义元素设置了许多指令。这些使用 tempateUrl 参数并从包含所有必要 HTML 的单独 html 文件中获取它们。快速而肮脏的示例,因为我发布完整的代码太多了:

登陆页面html:

<div help-menu />

角度指令:

module.directive('helpMenu', function(){
templateUrl: helpMenu.html,
controller: ...
link: ...
});

其中 helpMenu.html 包含相关元素的简单 html。

这不是问题,但是 html 文件的数量不断增加,我想将它们合并到登录页面的主 html 文件中,以减少 GET 请求的数量。这样做基本上涉及从每个文件中截取 HTML 并将其放置在登录页面 html 文件的末尾(同时包装在带有要抓取的 id 的 div 中)。该指令更改为使用:

template: $('#helpMenu')

如果 helpMenu 不包含角度代码,这很好用。但是,如果我的 html 包含任何角度代码,即 ng-repeat、ng-show 等,我会在 Firebug 中收到“节点未定义”或“linkNode 未定义”错误。奇怪的是一切都按预期工作尽管有错误,但我真的很想摆脱它。

我已经尝试了几种方法来解决这个问题(在不同的点尝试 $compile 没有帮助),但没有成功,而且关于这个特定错误的信息很少。我很困惑为什么当进来的 html 在两种方法中都相同时会出现问题。也许 template 和 templateUrl 处理事情的方式不同?

4

0 回答 0