Получить элемент из массива из html -файла - PullRequest
0 голосов
/ 20 июня 2020

Я использую метеор (версия 1.8) с blaze. js и mongodb.

Я пытаюсь использовать элемент массива, который выглядит так в файле html:

{{#each name in chatMeta.lastWhisp}}
 <div class="WhisperCharacter">
  {{name}}  
 </div>
{{/each}}

Соответствующий помощник для этого запроса выглядит так:

chatMeta() {
return ChatMeta.findOne({});
},

Запрашиваемая коллекция имеет массив «lastWhisp»

"lastWhisp": ["StringA", "StringB"]

Я пытаюсь чтобы получить информацию о {{name}} с помощью обработчика событий:

  'click .WhisperCharacter'(event, template) {
    alert(this.name); //<- Wrong
  },

Обычно я могу получить данные с помощью this.x на руле {{each}}, но это только кажется работают, если я запрашиваю каждый документ целиком, а не с массивом внутри одного документа.

Я пробовал много забавных вещей, таких как this.lastWhisp.name et c. в основном догадываюсь. Я не могу понять, что ему нужно, чтобы получить информацию об этом руле {{each}}. Может ли кто-нибудь помочь мне с тем, как это работает в этом случае?

Спасибо!

1 Ответ

1 голос
/ 20 июня 2020

Само событие не имеет информации о name, потому что оно представляет только то, что вы щелкнули элемент DOM.

Чтобы передать это значение, вы можете использовать атрибут данных data-* :

{{#each name in chatMeta.lastWhisp}}
 <div class="WhisperCharacter" data-name="{{name}}">
  {{name}}  
 </div>
{{/each}}

вы можете легко прочитать атрибут данных из события, используя встроенный jQuery .data метод на цели события:

'click .WhisperCharacter'(event, template) {
  const $target = template.$(event.currentTarget)
  const name = $target.data('name')
  alert(name)
},
...