Получение значений из каждой строки в Метеоре js - PullRequest
0 голосов
/ 31 марта 2020

Есть таблица, обернутая шаблоном. Я хочу получить значения из указанных полей этой таблицы вместе со значениями в форме. И в каждом ряду есть кнопка для передачи значений. Но когда я попытался распечатать их в консоли, он сказал, что это не определено. Так что у кого-нибудь есть решение для этого или лучший способ сделать это, я был бы очень признателен.

До сих пор я пытался использовать serializeArray(). Однако казалось, что он не может получить значения из элемента <td>.

<template name="student">
    {{#each student}}
    <tr>
      <td>{{name}}</td>
      <td>{{studentID}}</td>
      <td><textarea rows="1"></textarea></td>
      <td><input type="submit" class="btn btn-primary markAttendance"></td>
    </tr>
    {{/each}}
</template>

<template name="subject">
    <select id="dropdown" name="dropdown" class="form-control">
    <option>Please select a subject</option>
    {{#each subject}}
    <option>{{subjectCode}}</option>
    {{/each}}
    </select>
</template>

Обработчик события:

Template.content.events({
   'click .markAttendance':function(e){
     e.preventDefault();
     var subjectCode = $(e.target).find('[name=dropdown]').val();
     var week = $(e.target).find('[name=week]').val();
     var studentName = $(e.target).find('td:eq(0)').text();
     var studentID = $(e.target).find('td:eq(1)').text();
     console.log(subjectCode);
     console.log(week);
     console.log(studentName);
     console.log(studentID);
     //.....
   }
 });

Ответы [ 2 ]

1 голос
/ 31 марта 2020
    Template.content.events({
      'click .markAttendance':function(event, instance){
       e.preventDefault(); // not needed unless you have a form someplace I'm not seeing
       var student = this;
       var subjectCode = $('#dropdown').val();
       var week = $('[name=week]').val();
       var studentName = student.name;
       var studentID = student._id;
       console.log(subjectCode);
       console.log(week);
       console.log(studentName);
       console.log(studentID);
     //.....
   }
});
0 голосов
/ 31 марта 2020

Я использую https://viewmodelblaze.azurewebsites.net/blaze с Blaze, это делает этот вид этого супер простым, но без него вы можете:

Добавить data-studendid к входу

<td><input type="submit" class="btn btn-primary markAttendance" data-studentid="{{studentID}}"></td>

Затем вы можете запросить студента по идентификатору в вашем обработчике метода, ie: Students.findOne({_id: studentId})

...