12

ng-include到目前为止,我试图阅读文档,但没有运气。我要做的就是ng-include评估模板/部分所在的路径并加载内容:

<div data-ng-include src="'{{pageData.src}}'"></div>

我可以看到pageData.src正在控制台中返回"tpl/page.html"。我尝试了以下变体:

<div data-ng-include src="{{pageData.src}}"></div>
<div data-ng-include src='{{pageData.src}}'></div>
<div data-ng-include src={{pageData.src}}></div>

他们似乎都没有评估表达式。我收到以下错误:

Error: [$parse:syntax] http://errors.angularjs.org/1.2.9/$parse/syntax?p0=pageData.src&p1=is%20unexpected%2C%20expecting%20%5B%3A%5D&p2=3&p3=%7B%7BpageData.src%7D%7D&p4=pageData.src%7D%7D

非常感谢您的反馈!

4

2 回答 2

27

在 ng-include src 中采用 javascript 表达式,因此在您的情况下,以下内容应该有效:

<div data-ng-include src="pageData.src"></div>

当你看到这样的

<div data-ng-include src="'templates/myTemplate.html'"></div>

双引号内的额外单引号是本例中的 javascript 表达式字符串文字。

当您看到 {{}} 时,这是针对不采用 javascript 表达式而仅采用字符串的指令。例如 ng-href 接受一个字符串。该字符串可以是 js 表达式的结果,该表达式应包含在 {{}} 中,例如

<a ng-href="{{pageData.src}}/myImage.jpg">Go</a>

最后要提一下让我感到困惑的事情,那就是当有一个带有单卷曲 {} 的表达式时。例如

<a ng-class="{'active': item.active, 'locked': item.disabled}">Go</a>

在这种情况下,这是一个 js 映射表达式,并且 ng-class 采用具有计算结果为 true 的值的名称。因此,如果在上面的 item.active 的计算结果为 true,那么 'active' 将被添加为一个类。

于 2014-01-23T14:25:35.043 回答
4

尝试这个:-

<div data-ng-include="pageData.src"></div>

如果您可以发布 jsFiddle,我很容易看到确切的问题。

于 2014-01-23T14:24:46.560 回答