Vue:过滤对象数组以进行搜索

Gam*_*mer 4 javascript arrays search object vue.js

我有一个包含三个对象的数组,每个对象都有直接的键值对。

 // Search Input
 <div class="dv-header-search">
    <input type="text" class="dv-header-input"
      placeholder="Search"
      v-model="query.search_input">
  </div>

//Table row
<tr v-for="row in filteredRow">
    <td v-for="(value, key) in row">{{value}}</td>
</tr>

data() {
  return {
    model: {},
    columns: {},
    query: {
      search_input: ''
    },
  }
},

// Setting model after API call
.then(function(response) {
    Vue.set(vm.$data, 'model', response.data.model)
})

computed: {
  filteredRow: function(){
    return this.model.data.filter((row) => {
      return row;
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

它给了我以下例外:

类型错误:无法读取未定义的属性“过滤器”

我在这里缺少什么。

tha*_*ksd 5

model在方法中定义为空对象data

即使您设置了model稍后的值,您的filteredRow方法也会在组件渲染模板时触发,也就是说this.model.dataundefined在那时触发。

最简单的修复方法是model.data在方法中给出初始值data

data() {
  return {
    model: { data: [] },
    columns: {},
    query: {
      search_input: ''
    },
  }
},
Run Code Online (Sandbox Code Playgroud)