Vue.js 计数 json 值

Vue.js counting json value

我有这个Json

all_subjects: [
{
id: 1,
subject_code: "COMP101",
description: "Knowledge Work Software & Presentation ",
name: "",
grade: [
{
id: 103,
subject_id: "1",
user_id: "17",
grade: "F",
reviewed: "0"
},
{
id: 104,
subject_id: "1",
user_id: "16",
grade: "F",
reviewed: "0"
}
]
},

my view

 <tbody v-for="subject in subjects">
        <tr>
          <td>
            <span> @{{ subject.subject_code }}</span>
          </td>
          <td>
            <span> @{{ subject.description }} </span>
          </td>
          <td>
            <span> @{{ subject.grade.grade->count() }} </span>
          </td>
          <td><span> <div class="btn btn-crimson btn-inline-block"><a href="#" data-toggle="modal" data-target="#myModal" class="btn-view-more">View more info</a></div> </span></td>
        </tr>       
      </tbody>

F怎么算 我使用 vue.resource this.$http.get 通过 API 调用收到了 json 值。 我正在尝试这个 @{{ all_subjects.grade.grade->count() }} 它不起作用。 我想在 vue.js 中计算 v-for 循环内的主题失败有什么解决方法?

您正在尝试调用您的代码中不存在的方法 count()。此外,您不能像在 PHP 中那样在 Javascript 中调用方法。所以你不能使用 -> 运算符来进行方法调用。

您可以在 Vue 虚拟机中添加一个新方法:

methods: {
        count: function(subject) {
            var grades = subject.grade.filter(function(grade) {
                return grade.grade === 'F';
            });
            return grades.length;
        }
    },

上面的代码使用 Javascript 的 filter() 方法。

然后在您的视图中调用该方法:

<ul>
    <li v-for="subject in all_subjects">
        Number of F's: {{ count(subject) }}
    </li>
</ul>

另请注意,在您的 v-for 中,您引用的是 subjects 而不是 all_subjects