【问题标题】:Meteor 0.8.0: While building the application: Unexpected closing template tagMeteor 0.8.0:构建应用程序时:意外的关闭模板标签
【发布时间】:2014-05-08 03:33:31
【问题描述】:

我的模板中有这个部分,意外的结束模板标签是 {{/if}}。

{{#if selected}}
  <div class="Answer--selected">
{{else}}
  <div class="Answer">
{{/if}}
    <i class="fa"></i> {{title}}
  </div>

这段代码有什么问题?

【问题讨论】:

    标签: javascript html templates web meteor


    【解决方案1】:

    我的问题在 Meteor Devshop 得到了解答。 Meteor 0.8.0 中的一项重大更改是名为 Blaze 的新模板系统,它以一种全新的方式呈现您的模板。 Blaze 不会在模板每次呈现自身时重新生成整个 HTML 片段,而是仅查找需要更新的 DOM 节点并执行尽可能少的更改。这意味着您不再允许在块助手中包含未关闭的 HTML 标记。

    所以修正后的代码如下:

    {{#if selected}}
      <div class="Answer--selected">
        <i class="fa"></i> {{title}}
      </div>
    {{else}}
      <div class="Answer">
        <i class="fa"></i> {{title}}
      </div>
    {{/if}}
    

    HTH

    【讨论】:

      【解决方案2】:

      Meteor 0.8.0 有一个完全重写的模板引擎。名为烈焰。

      查看文档http://docs.meteor.com,特别是有关使用 blaze 的 wiki 页面。 https://github.com/meteor/meteor/wiki/Using-Blaze

      【讨论】:

        【解决方案3】:

        如果您只想根据条件更改类名,我相信这也可以。

        <div class="{{#if selected}}Answer--selected{{else}}Answer{{/if}}">
            <i class="fa"></i> {{title}}
        </div>
        

        只要你没有用你的助手破坏标签开始/结束,你应该没问题。

        史蒂夫

        【讨论】:

        • 嘿,这也有效!我认为该规则只要评估每个块表达式的结果是文本(即使该文本被用作属性的值)或格式正确的 HTML,它就可以与 Blaze 一起使用。
        • 同意。我相信你不能做的另一件事是:{{#if cond}}class="x"{{/if}} - 你的规则仍然适合。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-09
        • 2013-12-01
        • 1970-01-01
        • 2010-10-08
        • 2013-04-03
        相关资源
        最近更新 更多