2011-11-15 22 views
9

मैं अपने जावास्क्रिप्ट ajax कॉल templating के लिए मूंछें उपयोग करते हैं, यहाँ मेरी डेटा और टेम्पलेट है 1 व्यक्ति शामिल होता है, मैं 5 people joined so far दिखाना चाहता हूं।मूंछें जे एस और एकवचन/बहुवचन

सर्वर पक्ष AJAX जेसन उत्तरदाता में हेरफेर किए बिना इसे कैसे प्राप्त किया जाए?

उत्तर

5

आप इसे उस तरह से पहुंचाने में जावास्क्रिप्ट ऑब्जेक्ट के अंदर सशर्त तर्क जोड़ सकते हैं आप अपने सर्वर साइड 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); 

http://jsfiddle.net/mblase75/H8tqn/

+0

मैं इस स्वीकार्य उत्तर से इकट्ठा हूं कि मूंछ में ऐसा करने का कोई तरीका नहीं है, है ना? यह सच्चे झूठे भालू को सशर्त के रूप में संभालता है, कोई अन्य तुलना नहीं करता है? – enigment

0

वास्तव में आप यह केवल मूंछें के साथ कर सकते हैं,

var json = { 
    'rows': ['a','b','c'], 
    'numRows': function() { 
     return this.rows.length 
    } 
} // ajax response data json. 

आदेश करने के लिए: लेकिन मामले के लिए आपके JSON न केवल एक संख्या है, लेकिन मूल्यों की एक सरणी, एक साथ सरणी के आकार के साथ शामिल यह, आप निम्न मूंछें टेम्पलेट का उपयोग कर सकते हैं:

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.' 

परिणाम: http://jsfiddle.net/H8tqn/9/


पी.एस.:

0 people joined so far. 
1 person joined so far. 
2 people joined so far. 

आप दोनों टेम्पलेट्स यहाँ व्यवहार में लागू किया पा सकते हैं अगर मैं इस के लिए समाधान पा सकता हूं तो मैं फिर से पोस्ट करूंगा:

No people joined so far. 
1 person joined so far. 
2 people joined so far. 
संबंधित मुद्दे