Вы можете попробовать изменить quiz
на v-model
из activity
следующим образом:
<tr v-for="(student,index) in students" :key="index">
<!-- Filter Student Scores -->
<td>{{student.name}}</td>
<td v-for="(iact, i) in activities" :key="i">
<!-- Get Specific Student Score based on student_id -->
<div v-for="(quiz, i2) in iact.scores" :key="i2">
<input v-if="iact.scores[i2].student_id == student.id" v-model="iact.scores[i2].scores">
</div>
</td>
</tr>
Для правильной работы функции addAct
необходимо добавить начальное значение оценки, например this:
this.activities.push({
id: "",
activity_title: "",
hps: "",
scores: [
{ id: 170, scores: null, student_id: 1, activity_id: 43 },
{ id: 170, scores: null, student_id: 2, activity_id: 43 },
{ id: 170, scores: null, student_id: 3, activity_id: 43 },
{ id: 170, scores: null, student_id: 4, activity_id: 43 }
]
});
Это потому, что вы привязываете v-модель к объекту activity[array].score[array].score
. Если ввести пустое значение, это приведет к ошибке.
Мой предыдущий ответ:
Хотите ли вы отобразить оценку активности каждого студента следующим образом:?
Name | Activity 1 | Activity 2 |
---------+------------+-------------+
Student 1| xxx | xxx |
Student 2| xxx | xxx |
Если да, то может быть, вы можете попробовать это:
<!-- Show Each Student Activity Scores : n row -->
<tr v-for="(student,index) in students" :key="index">
<!-- For easier reading -->
<td>{{student.name}}</td>
<!-- Loop each activity / quiz -->
<td v-for="(quiz, i) in activities" :key="i">
<!-- Get Specific Student Score based on student_id -->
<input v-if="quiz.scores[index].student_id == student.id" v-model="quiz.scores[index].scores">
</td>
</tr>
Я должен попробовать это с помощью CodeSandbox здесь: https://codesandbox.io/s/sample-activity-tlckd Надеюсь, что поможет