在mustache.js中切换语句

时间:2012-12-15 13:30:59

标签: javascript templates mustache

有没有办法在Mustache.js中创建一个switch语句

我有一个变量,它可以是四个不同值之一。 取决于它的价值,我想输出略有不同的模板。

有办法做到这一点吗?

P.S我已经看到了question,但是问题听起来是一样的,但在答案中,这个人正在回答如何实现if / else功能,我可以找到here

关于代码的说明:

我有一个模板列表

var templates = {
    friends :
        'here there is some html with {{vars}}'+
        'and a button on which I have to write something like'+
        'add to friends | already your friend | invitation was sent | your invitation was rejected'
    }
}

所以基本上我正在进行ajax调用,并与vars一起返回type,这可能是以下0,1,2,3之一。根据这一点,我必须编写具体的文本

1 个答案:

答案 0 :(得分:5)

编辑:我假设你正在使用javascript。在看到您的用例后,您可以通过将函数传递给mustache来解决此问题,例如:

function getType(){
    switch(viewObject.typeid){
    //your cases here return what you want the function to print
    }
}

现在,你发送给胡子的对象应该有typeid,这将允许你将逻辑从Mustache(再次是无逻辑的)移回javascript。然后,您可以在代码中放置{{{getType}}}

<强>原始

如果我可能会问,您需要切换/案例声明的具体用法是什么?使用Mustache可能有一个更简单的解决方案。我编写了很多Mustache代码,并且从未遇到过使用视图模型传递函数时无法更好地解决的“切换案例”场景

请记住,您可以将函数作为参数传递给Mustache,这将允许您将逻辑从Mustache移回视图模型,这是(大多数情况下)一件好事。

如果不是这种情况,您可以随时切换把手:

Mustache用于无逻辑模板。如果你发现你的模板中有太多的逻辑,那么Mustache可能不是你的正确选择,你可以使用Handlebars来扩展Mustache,你现有的任何胡须代码都会继续工作。

http://handlebarsjs.com/

虽然把手不包含switch-case语句,但它允许你以更简单的方式编写if / else语句,并且它允许你定义可以完成你的功能的辅助函数。