我用鬍子的模板化我的JavaScript的Ajax調用,這是我的數據和模板:鬍子JS和單/複數
{'joined':1} // ajax responde data json.
var myTemplate = '{{ joined }} person joined so far.'
它的工作原理,但我想修補的語法在此,如果超過1人加入,我想顯示5 people joined so far
。
如何在不操縱服務器端ajax json responder的情況下實現這一目標?
我用鬍子的模板化我的JavaScript的Ajax調用,這是我的數據和模板:鬍子JS和單/複數
{'joined':1} // ajax responde data json.
var myTemplate = '{{ joined }} person joined so far.'
它的工作原理,但我想修補的語法在此,如果超過1人加入,我想顯示5 people joined so far
。
如何在不操縱服務器端ajax json responder的情況下實現這一目標?
您可以添加條件邏輯的JavaScript對象內,如果你能哄你的服務器端AJAX到提供這樣的說法:
var json = {
'joined': 1,
'ppl': function() {
return (this.joined === 1) ? 'person' : 'people'
}
} // ajax responde data json.
var myTemplate = '{{ joined }} {{ppl}} joined so far.'
Mustache.to_html(myTemplate, json);
其實你可以只用鬍子做,但對於情況下,你JSON不僅包含了一些,但值的數組,加上數組的大小:
var json = {
'rows': ['a','b','c'],
'numRows': function() {
return this.rows.length
}
} // ajax response data json.
爲了做到它,你可以使用下面的鬍子模板之一:
在簡單情況下,當你只需要添加「s」是複數:
var myTemplate = '{{ numRows }} link{{^rows}}s{{/rows}}{{#rows.1}}s{{/rows.1}} parsed so far.'
結果:
0 links parsed so far.
1 link parsed so far.
2 links parsed so far.
在一般情況下,當多個特殊(如人/人):
var myTemplate2 = '{{ numRows }} {{^rows}}people{{/rows}}{{#rows.0}}{{^rows.1}}person{{/rows.1}}{{/rows.0}}{{#rows.1}}people{{/rows.1}} joined so far.'
結果:
0 people joined so far.
1 person joined so far.
2 people joined so far.
您可以在這裏練習均應用於模板: http://jsfiddle.net/H8tqn/9/
附:我會後再次在這裏如果我能找到這個問題的解決:
No people joined so far.
1 person joined so far.
2 people joined so far.
我從這個是公認的答案收集不存在任何方式鬍子本身要做到這一點,對不對?它處理真假虛假變量作爲條件,沒有其他比較? – enigment