3

有没有办法在 Mustache.js 中进行 switch 语句

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

有没有办法做到这一点?

PS我看过这个问题,但是这个问题听起来是一样的,但是在答案中,这个人正在回答如何实现if/else功能,我可以在这里找到。

关于代码的解释:

我有一个模板列表

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。取决于此,我必须编写特定的文本

4

1 回答 1

5

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

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

现在,您发送给 mustache 的对象应该具有 typeid,这将允许您将逻辑从 Mustache(同样是无逻辑​​的)移回 javascript。然后你可以放入{{{getType}}}你的代码。

原来的:

如果我可能会问,您需要 switch/case 语句的具体用途是什么?使用 Mustache 可能有一个更简单的解决方案。我已经编写了很多 Mustache 代码,并且从未遇到过通过使用视图模型传递函数并不能更好地解决的“switch-case”场景

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

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

Mustache 用于无逻辑模板。如果你发现你的模板有太多的逻辑,Mustache 可能不是你的正确选择,你可以使用 Handlebars 来代替 Mustache,你拥有的任何当前的 mustache 代码都将继续工作。

http://handlebarsjs.com/

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

于 2012-12-15T14:55:35.227 回答