2013-06-30 2 views
5

के साथ ऑब्जेक्ट्स के सरणी को सरणी कैसे प्रस्तुत करें मैं जावास्क्रिप्ट में मूंछ टेम्पलेट के साथ ऑब्जेक्ट्स के सरणी की सरणी प्रस्तुत करने की कोशिश कर रहा हूं, और मुझे कोई अन्य व्यक्ति नहीं मिला है जिसने इस प्रश्न से पूछा है। मैं वस्तुओं की एक सरणी बस ठीक कर सकता हूं, लेकिन मैं यह नहीं समझ सकता कि उनमें से एक सरणी कैसे प्रस्तुत की जाए। मैं प्रत्येक नेस्टेड सरणी को अपने स्वयं के चर के लिए असाइन कर सकता हूं, लेकिन उनमें से कोई भी संख्या हो सकती है, इसलिए मुझे वास्तव में उन्हें एक सरणी के रूप में रखने की आवश्यकता है।मूंछ

[ 
    [ 
     { id: 12345, name: "Billy" }, 
     { id: 23456, name: "Joe" }, 
     { id: 34567, name: "Jenny" } 
    ], 
    [ 
     { id: 45678, name: "Amy" }, 
     { id: 56789, name: "Julie" }, 
     { id: 67890, name: "Sam" } 
    ] 
] 

बाहरी सरणी नेस्टेड सरणियों के किसी भी संख्या हो सकते हैं और प्रत्येक नेस्टेड सरणी किसी भी संख्या वस्तुओं को रख सकती:

यहाँ डेटा के प्रकार मैं रेंडर करने के लिए की जरूरत है।

मुझे नहीं पता कि यह मूंछ के साथ संभव है या नहीं। मैंने फ़ंक्शन का उपयोग करने का प्रयास किया, और यह पहली बार है जब मैंने कभी मूंछ के साथ एक फ़ंक्शन का उपयोग किया है, इसलिए शायद मैं कुछ गलत कर रहा हूं। मैं इसे बैकबोन व्यू के रेंडर फ़ंक्शन से कॉल कर रहा हूं। सरणी की सरणी (ऊपर दिखाया गया) दृश्य के मॉडल के गुणों का हिस्सा है। तो यहां मैंने कोशिश की है।

render: 
    function() 
    { 
     this.model.attributes.getList = 
      function() 
      { 
       return function (str, func) { return 'What in the world should I return here?'; } 
      } 

     this.$el.html (Mustache.render ($ ('#detail-template').html(), this.model.attributes)); 

     return this; 
    }, 

और यहां मेरे टेम्पलेट का अनुभाग है जहां मैं फ़ंक्शन का उपयोग करने का प्रयास कर रहा हूं।

{{#getList}} 
    {{name}} 
{{/getList}} 

मुझे पूरा यकीन है कि {{name}} वहां नहीं है, लेकिन मुझे नहीं पता कि मैं वहां और क्या रखूंगा।

मैंने func (str) लौटने का प्रयास किया, लेकिन यह सब मुद्रित एक लंबी स्ट्रिंग थी जिसमें [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट] ], [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट]

मैं उस स्ट्रिंग को जेसन ऑब्जेक्ट के रूप में उपयोग नहीं कर सका, यह केवल एक स्ट्रिंग था।

मैं रीढ़ की हड्डी और मूंछ दोनों के लिए कुछ नया हूं, इसलिए मैंने सोचा कि किसी के पास "सर्वोत्तम अभ्यास" समाधान हो सकता है, या कम से कम मुझे बता सकता है कि यह असंभव है इसलिए मैं और अधिक समय बर्बाद नहीं करता यह। मुझे इंटरनेट पर कहीं भी एक समान सवाल नहीं मिला।

+1

क्या आप बस अपनी सरणी को फ़्लैट नहीं कर पाए? underscore के flatten समारोह के साथ? Btw। वहां प्रस्तुत करने के लिए आपको "model.attributes" वापस नहीं देना चाहिए, लेकिन "model.toJSON()"। – Luke

+0

@ ल्यूक सही है, यदि आप मूंछ का उपयोग कर रहे हैं तो आप टेम्पलेट के पास कहीं भी पहुंचने से पहले जावास्क्रिप्ट में अपने सभी डेटा को झुकाव करने जा रहे हैं। –

उत्तर

1

यह प्रश्न 2 साल पुराना है, लेकिन मुझे लगता है कि इससे पहले कभी देर हो चुकी है। आप सरणी में वर्तमान तत्व को संदर्भित करने के लिए {{।}} का उपयोग कर सकते हैं।

context = [ 
    [ 
     { id: 12345, name: "Billy" }, 
     { id: 23456, name: "Joe" }, 
     { id: 34567, name: "Jenny" } 
    ], 
    [ 
     { id: 45678, name: "Amy" }, 
     { id: 56789, name: "Julie" }, 
     { id: 67890, name: "Sam" } 
    ] 
] 

template = " 
    {{#context}} 
     {{#.}} 
      <span id={{id}}>{{name}}</span> 
     {{\.}} 
    {{/context}} 
" 
संबंधित मुद्दे