Meteor 0.8.0:构建应用程序时:意外的关闭模板标签

Posted

技术标签:

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

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

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

这段代码有什么问题?

【问题讨论】:

【参考方案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 selectedAnswer--selectedelseAnswer/if">
    <i class="fa"></i> title
</div>

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

史蒂夫

【讨论】:

嘿,这也有效!我认为该规则只要评估每个块表达式的结果是文本(即使该文本被用作属性的值)或格式正确的 HTML,它就可以与 Blaze 一起使用。 同意。我相信你不能做的另一件事是:#if condclass="x"/if - 你的规则仍然适合。

以上是关于Meteor 0.8.0:构建应用程序时:意外的关闭模板标签的主要内容,如果未能解决你的问题,请参考以下文章

Meteor:WebSocket 握手期间出错:意外响应代码:400

如何在 Meteor 中使用 #each 块实现最后一项的条件?

如何防止meteor.local的负载(使用phonegap构建ios应用程序时)

Meteor 1.3 NPM:意外的保留字导入

发布函数中的 Meteor.userId()

将 Meteor Cordova 构建的应用程序连接到本地服务器和数据库