Handlebars.JS(带有Dashbars)解析错误"期望open_endblock得到反转"

时间:2015-04-20 17:10:45

标签: javascript mustache handlebars.js templating-engine

首先,我将输出的内容转储到Handlebars模板并通过JSONlint.com运行并验证,因此我的输入有效。其次,这是我可以编写代表性但不包含重要数据的最佳示例代码:http://codepen.io/Muzical84/pen/BNBLom?editors=101(注意,如果您启用了HTTPS-Everywhere,请在codepen上关闭它。 io,因为支持被列为" partial,"并且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}}但是为了调试目的而把它拿出来了。

起初,我已将对象命名为&#34; phone&#34;并认为可能&#34; phone.PHONE&#34;太暧昧,但&#34; this.PHONE&#34;并将其重命名为phoneObj并没有改变任何东西。这都在一个巨大的{{#each this}}内,可以打印表格的行。我没有使用我之前在模板中没有使用过的任何标签而且没有发生任何事故,而且我确实认为,如果等等,我可以合法地嵌套。

顺便说一句,即使我用{{! if xyz}}注释掉这些行,我仍然会得到相同的错误,引用同一行。

我还遇到了我的最外层{{#each}}循环问题,只有通过模板输出的最后一条记录才会输出。在打开{{log this}}之后,所有内容都会在{{#each}}后登录,但它甚至不会隐藏在HTML输出中。

我不熟悉模板,所以那些之前做过的人可能会认为这是一个愚蠢的问题。我已经用可用的文档完成了我所能做的事情,但很多车把官方文档似乎都假定熟悉模板。

1 个答案:

答案 0 :(得分:0)

事实证明,错误消息引用的行是错误的(可能是因为,当我在我的代码文件中查找行号时,我忘记从我的{{添加头模板中的行) 1}}在顶部。我仍然对ColdFusion足够新......发生这种情况......)继续下来,我DID有一个缺失<cfinclude>我不知道为什么这些行被引用那是,但它确实存在。但是,我的“每个只打印最后一项”错误仍然存​​在,但我会为此创建一个不同的问题。