2014-11-11 5 views
8

पर पहुंच गया है, मैं {{#each}} का उपयोग कर उल्का में संग्रह के माध्यम से पुनरावृत्ति कर रहा हूं और मैं जानना चाहता हूं कि मैं अंतिम तत्व में हूं या नहीं, जैसा कि मैं $ पिछले के साथ ngRepeat का उपयोग करते हुए AngularJS में कर सकता हूं।#each का उपयोग करते हुए उल्का में, जांचें कि संग्रह में 'अंतिम' तत्व

यह किया जा सकता है उदाहरण की तरह 'मैं बिल्लियों, कुत्तों और डॉल्फिन की तरह' मानव पठनीय enumerations के निर्माण के लिए के लिए:

Template.myTemplate.helpers({ 
    likedAnimals: function(){return ['dogs','cats','dolphins'];} 
}); 

<template name='myTemplate'> 
    I like 
    {{#each likedAnimals}} 
     {{#if !$first && !$last}}, {{/if}} 
     {{#if $last}} and {{/if}} 
     {{this}} 
    {{/each}} 
</template> 

वहाँ उल्का में इस हालत की जांच करने के कोई तरीका है? (यह बनाने

Template.myTemplate.helpers({ 
    likedAnimals: function(){ 
     var animals = ['dogs','cats','dolphins'] 
     return animals.map(function(animal, index){ 
      return { 
       name: animal, 
       isFirst: index==0, 
       isLast: index==animals.length-1 
      } 
     }) 
    } 
}) 

हालांकि, इस प्रतिक्रिया के साथ अच्छा नहीं चलता है:

+0

@ РСТȢѸФХѾЦЧШЩЪЫ ѢѤЮѦѪѨѬѠѺѮѰѲѴ, आप कृपया कुछ कम अप्रिय अपने उपयोगकर्ता नाम बदल सकते हैं? –

+2

यह एक अच्छा सवाल है। – Mitar

उत्तर

1

यह (संस्करण 1.0) अभी तक उल्का में समर्थित नहीं है, लेकिन आप इसे एक तरह से अपने आप को कुछ इस तरह करने से जोड़ सकते हैं प्रतिक्रियाशीलता के साथ ठीक से काम करना बहुत कठिन है, जो मुझे लगता है कि यह अभी तक एक निर्मित सुविधा क्यों नहीं है), लेकिन यदि आप एक साधारण सरणी वापस लौटते हैं जो कि किसी भी प्रतिक्रियाशील डेटा स्रोत पर निर्भर नहीं है, तो यह ठीक काम करना चाहिए।

+0

ग्रेट @peppe, और अगर मैं एक साधारण सरणी के बजाय एक उल्का संग्रह का उपयोग कर रहा था? –

+1

@ जेरार्ड कार्बो, वही प्रिंसिपल संग्रह पर लागू होता है ('TheCollection.find()। Fetch() ') के माध्यम से सरणी को पुनर्प्राप्त करें: यदि कोई दस्तावेज़ जोड़ा नहीं गया है, अपडेट किया गया है या हटाया गया है, तो यह समाधान एक आकर्षण की तरह काम करता है। –

6

underscore.js का उपयोग करना:

Template.registerHelper('last', 
    function(list, elem) { 
     return _.last(list) === elem; 
    } 
); 

<template name='myTemplate'> 
    {{#each likedAnimals}} 
     {{#if last ../likedAnimals this}} I'm the last ! {{/if}} 
    {{/each}} 
</template> 

उल्का 1.1.0.1 के साथ मेरे लिए एक प्रतिक्रियाशील डेटा स्रोत के साथ काम किया (मैं नहीं जानता कि जब Template.parentData() उल्का में पेश किया गया था)।

+0

'{{# यह करें}}' का उपयोग करते समय इस दृष्टिकोण का उपयोग कैसे करें? – Alex

+0

मुझे इस समस्या में परेशानी थी जब 'सूची' वस्तुओं की एक सरणी थी और 'elem' भी एक वस्तु थी। यह कभी सच नहीं होगा। इसलिए मुझे इसे काम करने के लिए इस तरह की तीसरी पंक्ति को संपादित करना था: '_ _last (list)। _ Id == elem._id;' – gkrizek

6

यदि आप में से कोई भी सोच रहा है कि संग्रह कर्सर के साथ ऐसा कैसे करना है, तो handlebar-helpers पैकेज के लिए बहुत आसान तरीका है।

फिर आप इस्तेमाल कर सकते हैं:

$ मैप किया - अपने कर्सर या सरणी पर $ पहले, $ पिछले, और $ सूचकांक मैप कर देंगे

ऐसे ही अपने खाके में $ पिछले सहायक के साथ संयुक्त :

{{#each $mapped myCursor}} 
    {{name}}{{#unless $last}},{{/unless}} 
{{/each}} 

पुनश्च: यह भी सरणियों के साथ काम करता है

संबंधित मुद्दे