javascript - 在 VueJS 中使用计算属性搜索过滤器

标签 javascript vue.js vuejs2

我有一个 Vue 项目,在其中创建了一个 Vue 组件来显示博客列表。该组件导入一个 JS 文件,其中包含每个博客列表的数组。

我已将一个 HTML 输入链接到一个计算属性,以便允许用户进行搜索。然后,for 循环将过滤博客列表并显示相关结果。但是,尽管完整列表在加载时显示,但当我在输入中输入搜索查询时,所有内容都会消失,并且控制台中的错误显示“无法读取未定义的属性‘匹配’”。我做错了什么?

我的代码如下;

<ul>
  <li v-for="blog in filteredBlogs">
      {{blog.blogName}}
  </li>
</ul>


import blogs from "./../data/blogs";
export default {
    data() {
        return {
            blogs: blogs,
            search:'',
        };
    },
    computed: {
      filteredBlogs:function(){
        return this.blogs.filter((blog) => {
           return blog.blogName.match(this.search);
        });
      }
    }
};

最佳答案

当你编写 this.blogs.filter( ... ) 时,this 指的是当前的 Vue 实例。因此,Vue 将在 data 对象中查找 blogs,但该对象不存在。

在没有看到应用程序的其余部分的情况下,我不确定为什么要导入 blogs 并将其保存到 Vue 实例中的 clubs 键。但要解决当前的问题,您可以将 filteredBlogs 计算属性更改为:

  1. this.clubs.filter( ... ),或
  2. blogs.filter( ... )

请参阅此工作 JS Fiddle 以供引用:https://jsfiddle.net/voveson/7awythx8/8/

关于javascript - 在 VueJS 中使用计算属性搜索过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068963/

相关文章:

javascript - Redux 过渡到 Action 执行后

javascript - 无法从 Bootstrap 弹出窗口中的输入元素获取值

javascript - 导轨 3 : Passing a string from Ruby to Javascript?

javascript - 如何使用多个 b-form-radio-group 避免它们之间的视觉干扰?

javascript - 将预处理器语言添加到 vueify 组件的样式部分会导致构建失败而不会出现错误

javascript - Vue.js:在不同时使用 v-for 和 v-if 的情况下过渡元素的最佳方式?

javascript - 在 Google 图表中过滤日期和时间

javascript - 如何过滤数据对象?

node.js - 如何在生产环境中使用 nginx 服务 webpack 构建文件

javascript - Vue Chart.js 组件不呈现