把手在条件下定义{{with}}

时间:2014-08-22 14:06:02

标签: javascript handlebars.js

我希望根据javascript定义的变量在我的模板中显示与json不同的内容。

这是JSON文件:

{
"normal" :{
    "content":"content"
}
"expert" :{
    "content":"content"
}

[HTML]现在在我的模板中,我有这个:

{{#with normal}}
    <p>{{content}}</p>
{{/with}}

现在我希望能够使用'with normal'或'with expert',具体取决于javascript端定义的变量。

我已经做了一个比较助手但是,我必须使用两次代码,这很难看。所以也许有人知道如何正确地做到这一点?感谢。

2 个答案:

答案 0 :(得分:2)

你真的需要模板中的逻辑吗?

如果{{#with}}块的正文对于normalexpert类型的数据是相同的,那么您可以完全摆脱with并传递相应的阻止进入模板。这会将逻辑推回到脚本中(并且希望视图,如果你有一个MVC框架),这很好,并优化了模板的级别(也很好,特别是因为它是with,往往很慢。

请注意,Handlebars非常乐意使用更多数据来获取一个对象,因此编写一个取决于normal块的模板并将expert传递给其他人细节(大概)根本不会引起任何问题。

答案 1 :(得分:0)

您可以使用{{#if和else ... 此外,您可以使处理程序全局并使用它两次。