2016-11-17 3 views
1

Мне нужен уникальный идентификатор для каждого div на моей странице. Прямо сейчас я назначал его в помощнике с Random.id(), но я просто понял, что id изменяется на rerender (duh!).Как назначить уникальные идентификаторы для DIV, сгенерированных из многомерного массива в Meteor/Blaze

Как я могу получить статический уникальный идентификатор? Я знаю, что мне нужен счетчик, но я не знаю, как это сделать с Blaze.

Вот мой HTML:

<template name="article"> 
    <article> 
     <h2>{{title}}</h2> 
      {{#each paragraphs}} 
       {{> paragraph }} 
      {{/each}} 
    </article> 
</template> 
<template name="paragraph"> 
    <div class="container paragraph"> 
     {{#each sentences}} 
      {{>sentence}} 
     {{/each}} 
    </div> 
    <BR><BR> 
</template> 
<template name="sentence"> 
    <span> 
     {{#each forward.words }} 
      {{> word }} 
     {{/each}} 
    </span> 
</template> 
<template name="word"> 
    {{#with theWord}} 
     <div id="{{divID}}" class="word nonPopped" data-wordID="{{_id}}"> 
      <p class="pinyin thinnerBottom text-muted score{{score}}">{{pinyins.[0].pīnyīn}}</p> 
      <h3 class="thinnerTop "> 
       <a style="color: black;" href="#"> 
        {{#each characters}} 
         {{>character}} 
        {{/each}} 
       </a> 
      </h3> 
     </div> 
    {{/with}} 
</template> 
<template name="character"> 
    {{#with theCharacter}} 
     <span id="{{spanID}}" class="character thinnerTop">{{simplified}}</span> 
    {{/with}} 
</template> 
+0

Нет, извините, это не коллекция. Это документ со ссылками на collection._ids, и некоторые из них повторяются. – webmagnets

ответ

0

Вот что, кажется, работает:

Template.word.onCreated(function() { 
    this.data.divID = Random.id(6) 
}) 

Template.word.helpers({ 
theWord: function() { 
    var theWord = Words.findOne({_id: this.wordID}) 
... 
     if (!theWord.divID) { 
      theWord.divID = this.divID 
     } 
     return theWord 
    } 
}) 

Если при дальнейшем тестировании это не работает, я буду удалять этот ответ.

0

Если вы итерацию по коллекции, то просто использовать id="{{_id}}. Счетчик {{@index}}

+0

Нет, извините, это не коллекция. Это документ со ссылками на документы коллекции, и некоторые из них повторяются в массиве. – webmagnets

+0

Затем используйте счетчик. –

+0

Я пробовал, и он не работает. Не сейчас на моем компьютере, поэтому я не могу процитировать ошибку. В принципе, он не признавал {{@counter}} означать что угодно. Вероятно, это не сработало, потому что это многомерный массив. Не уверен. – webmagnets