Метеор получает ObjectId из компонента шаблона Blaze в. js - PullRequest
0 голосов
/ 22 января 2020

Я создал динамическую c таблицу, значения строк которой могут меняться за сеанс. В последнем столбце я показываю 5-звездочную шкалу оценок, чтобы пользователи оценивали каждую отображаемую строку, я правильно получал значение и, кроме того, мне нужно было знать, какой Id / ряд оценил пользователь (так как они изменяются динамически). html выглядит следующим образом, где product = this (с указанием оцениваемой строки) передается в компоненте starsRating:

<td class="featuretablerow">
   <p>{{> starsRating mutable=true size='md' class='js-rate-image'
          id='js-rate-image' product=this }}</p>
</td>

и соответствующем. js block

var starId = $('#js-rate-image').attr('product');

Я получаю неопределенный, хотя при запуске, как я могу получить это правильно?

Ответы [ 2 ]

1 голос
/ 22 января 2020

Если я правильно понимаю, то вы намерены использовать этот код jQuery в случае рейтинга. Если это так, то я бы сказал, что вы поступаете неправильно. Blaze имеет надлежащую поддержку обработки событий в шаблонах .

Что-то вроде этого должно работать:

Template.starsRating.events({
  'click': function() {
    console.log('rated product is', this.product);
  }
});

В этих обработчиках событий this является текущим контекстом данных шаблона.

0 голосов
/ 19 марта 2020

Вам просто не нужно ничего передавать для получения данных о событиях в файле js. HTML файл

{{#with product}}
    <td class="featuretablerow">
        <p>{{> starsRating mutable=true size='md' class='js-rate-image'
             id='js-rate-image'}}</p>
    </td>
{{/with}}

JS файл

Template.starsRating.events({
    'click': function() {
        console.log('rated product is', this.name);
    }
});

Вы можете напрямую приобрести недвижимость

...