javascript - vue.js 如何在 for 循环中调用函数并传递当前项?

标签 javascript vue.js vuejs2

使用 vue.js 2,在 for 循环内,仅当当前迭代项通过某些测试时,我才需要渲染一行。

测试很复杂所以很简单v-if="item.value == x"不会做。

我编写了一个名为 testIssue 的函数接受该项目并返回 true 或 false 并尝试使用的是 v-if像这样:

<template v-for="issue in search_results.issues">
  <tr v-if="testIssue(issue)">
     ....
  </tr>
</template>


var releaseApp = new Vue({
  el: '#release-app',
  methods: {
    testIssue: function(issue) {
      console.log(issue);
      console.log('test');
    },
  },
  mounted: function() {},
  data: {
    search_results: {
      issues: []
    },
  }
});

然而,testIssue永远不会被调用。

如果我将行更改为 <tr v-if="testIssue"> ,该函数被调用,但我没有 issue我需要测试的变量。

我也试过<tr v-if="releaseApp.testIssue(issue)">

如何调用 v-if 中的函数在 for 循环内声明并传递当前项?

最佳答案

首先你不能做v-for<template> 上标记,因为每个模板只能有一个元素。

你可以在与 v-for 相同的元素上添加一个 v-if,它不会渲染没有通过 v-if 的元素。如果它是每行一个 spearate 组件,那么最好在父组件中执行 v-for 并将问题通过 props 传递给子组件。

家长:

<child-comp v-for="issue in search_results.issues" v-if="testIssue(issue)">
</child-comp>

child :

<template>
  <tr>
    {{issue}}
  </tr>
</template>

关于javascript - vue.js 如何在 for 循环中调用函数并传递当前项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44901416/

相关文章:

javascript - Vue.js $emit 和 $dispatch 有什么区别?

javascript - 将 gridstack.js 包装到 Angular 2 组件中

javascript - 使用 JavaScript 将 JSON 数据显示到 HTML 页面

javascript - 如何使用 fs.writeFile 格式化 csv 文件

javascript - Vue-多选和 Vuex : Having a value from store pre-selected

javascript - 上传文件时 CORS 失败

javascript - Vuejs : Dynamic Recursive components

php - 如何加密文件下载路径

javascript - 有没有办法在 Vue.js 中动态插入点击事件?

javascript - Vue Js 包装组件绑定(bind)多个值