2012-12-15 261 views
2

有沒有一種方法,使在Mustache.jsswitch語句

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。根據這個,我必須寫具體的文字

回答

4

編輯:我假設你使用的是JavaScript。看到你的使用情況後,你可以通過一個函數來小鬍子,例如解決此問題:

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

現在,您發送到鬍子應該有typeid的對象,這將讓你的邏輯,從鬍鬚移動(其再次,無邏輯)回到JavaScript。然後你可以在你的代碼中放置{{{getType}}}

原文:

如果我可能會問,什麼是你需要爲你的開關/ case語句的具體用法?使用鬍子可能會有一個更簡單的解決方案。我寫了大量的鬍鬚代碼,並且從未遇到過使用視圖模型傳遞函數並不能更好解決的「切換案例」場景。請記住,您可以將函數作爲參數傳遞給小鬍子,這將允許您將邏輯從Mustache移回到視圖模型(大多數情況下)是件好事。

如果不是,你可以隨時切換車把的情況:

鬍子用於logicless模板。如果您發現模板中有太多邏輯,Mustache可能不是您的正確選擇,您可以使用Handlebars來擴展Mustache,任何當前的鬍鬚代碼都將繼續工作。

http://handlebarsjs.com/

雖然車把不包含的switch-case語句,它允許你寫if/else語句在一個更簡單的方式,它會允許你定義輔助功能,可以實現自己的功能。