首先,我将输出到 Handlebars 模板并通过 JSONlint.com 运行它并进行验证,因此我的输入是有效的。其次,这是我可以编写的具有代表性但不包含重要数据的最佳示例代码:http ://codepen.io/Muzical84/pen/BNBLom?editors=101 (请注意,如果您启用了 HTTPS-Everywhere,在 codepen.io 上关闭它,因为支持被列为“部分”,Chrome 可能仍然会抱怨不安全的脚本;我在 JS 部分的底部包含了除 jQuery 之外的所有库,缩小,以便关闭开发尽可能多的工具。)我还将包含下面的一些代码,因为 SO 告诉我它不会让我包含该链接。
无论如何,我正在尝试使用带有 Dashbars 一侧的 Handlebars 来输出 ColdFusion WSDL 的结果。它在周五下午工作,但是当我上周一开始编写代码时,我所做的一切都会产生这个错误:
Uncaught Error: Parse error on line 139:
... {{else}}
-----------------------^
Expecting 'OPEN_ENDBLOCK', got 'INVERSE'
那时的代码是:
<td><p>{{#each phoneObj}}
{{#if (s-start-with? 'Y' PRIMARY_FLAG)}}
<span class="primaryInformation">{{PHONE}}</span>
<span class="lightBlue">
{{#if COMM_LOCATION_CODE}}
{{COMM_LOCATION_CODE}}
{{else}}
{{PHONE_TYPE}}
{{/if}}
</span>
{{else}}
{{PHONE}}
<span class="lightBlue">
{{#if COMM_LOCATION_CODE}}
{{COMM_LOCATION_CODE}}
{{else}}
{{PHONE_TYPE}}
{{/if}}
</span>
{{/if}}
<br />
{{else}}
No phone or e-mail data found
{{/each}}</p>
</td>
(我为格式化道歉......)电话数据(实际上是电话和/或电子邮件;我没有设计这个数据库......)大约在我的模板两端之间codepen.io 示例。(整个事情真的很长,我不想浪费任何人的时间在整个很长的事情上。)最初,我做的更多{{#if fieldThatShouldHaveData}} {{else}}
,但出于调试目的把它拿出来了。
起初,我将对象命名为“phone”,并认为“phone.PHONE”可能过于模糊,但“this.PHONE”并将其重命名为 phoneObj 并没有改变任何东西。这一切都在{{#each this}}
打印表格行的巨大空间内。我没有使用任何我在模板中之前没有使用过的标签,而且我确实确认嵌套 if 等对我来说是合法的。
顺便说一句,即使我用相同的行注释掉这些行,{{! if xyz}}
我仍然会得到相同的错误。
我也遇到了最外层{{#each}}
循环的问题,即只有返回的最后一条记录通过模板输出。{{log this}}
一切都在打开之后登录{{#each}}
,但它甚至没有隐藏在 HTML 输出中的某个地方。
我是模板新手,所以以前做过的人可能会认为这是一个愚蠢的问题。我已经用可用的文档做了我能做的,但是很多车把官方文档似乎都假定熟悉模板。