mustache - Handlebars - 动态元素属性

标签 mustache handlebars.js

我想做这样的事情:

{{#each user}}
    <span class="{{user.female ? 'female-span' : 'male-span'}}">{{name}}</span>
{{/each}}

这在 angularjs 之类的东西中很容易做到,但我不能做这个 Handlebars 。当我想动态更改元素属性时,在 Handlebars 中要遵循的习惯用法/模式是什么?是否有任何 Handlebars 插件可以做到这一点?

最佳答案

Handlebars 只给你{{#if}} helper(可以在这里使用,它只是冗长的)。由于逻辑较少,它不会评估括号内传递的代码(下划线模板会这样做)。

这是一件好事,因为它确保您的模板不会有任何副作用。

在这里,您可能希望从模板中删除此逻辑并将类名作为模板参数传递:

template({ genderClass: user.female ? 'female-span' : 'male-span' });

然后,在模板中:
<span class="{{genderClass}}">{{name}}</span>

在你的情况下,你在一个数组中,所以你可以添加 genderClass作为模型属性。否则,您可以使用自定义帮助器方法,但对于非常简单的事情来说,这是很多开销。

关于mustache - Handlebars - 动态元素属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18341617/

相关文章:

javascript - 带有 "link"关键字的 Mustache.js 扩展行为

javascript - icanhaz.js & Mustache.js : Rendering more complex items

javascript - 我可以在 mustache.js 模板中调用全局函数吗?

javascript - 迭代 {{#each id}} 时动态访问 getElementId

if-statement - Handlebars : native inline conditional expression or equivalent?

node.js - 这个字符 ""是什么?为什么它会导致换行?

javascript - 使用 src 属性访问脚本标签的内容(包括模板)

Backbone.js:如何最有效地将我共享的 Mustache 模板应用到 View 的 el?

ruby-on-rails - 使用带有 Sammy.js 的单个模板( Handlebars 或 Mustache)的 Rails 客户端/服务器端渲染

jquery - 将 undefined 传递给 Handlebars.compile