Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vuejs2 Vue复选框筛选器组件不工作_Vuejs2_Vue Component_Event Bus - Fatal编程技术网

Vuejs2 Vue复选框筛选器组件不工作

Vuejs2 Vue复选框筛选器组件不工作,vuejs2,vue-component,event-bus,Vuejs2,Vue Component,Event Bus,在单个文件组件中,我创建了一个复选框数组: <label v-for="(category, index) in categories" :key="index" > <input type="checkbox" :value="category.value" @change="emitSearchValue"> <span class="ml-2 text-gray-700 capi

在单个文件组件中,我创建了一个复选框数组:

    <label 
      v-for="(category, index) in categories" 
      :key="index"
     >
      <input type="checkbox" :value="category.value"
      @change="emitSearchValue">
      <span class="ml-2 text-gray-700 capitalize">{{ category.value }}</span>
    </label>
在列表组件中,我侦听EventBus:

created() {
 EventBus.$on('checked-value', (checkedCategories) => {
  this.checkedvalue = checkedCategories;
 })
}
然后我的计算属性如下所示:

computed: {
 filteredData() {

   return this.blogs.filter(blog =>
   // if there are no checkboxes checked. all values will pass otherwise the category must be included
    !this.checkedCategories.length || this.checkedCategories.includes(blog.category)
   )
  }
},
在控制台中,我得到:

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
这里是一个链接到一个


这里出了什么问题?

将计算属性
filteredata
更改为:

computed: {
    filteredData() {
      if(!this.checkedvalue.length) return this.experiences

      return this.experiences.filter(experience =>
        this.checkedvalue.includes(experience.category)
      );
    }
}

将计算属性
filteredData
更改为:

computed: {
    filteredData() {
      if(!this.checkedvalue.length) return this.experiences

      return this.experiences.filter(experience =>
        this.checkedvalue.includes(experience.category)
      );
    }
}

您的数据部分中可能没有
类别
属性?或者,当您发出事件时,您应该删除
this.checkedCategories
周围的引号?如果没有一个有效的JSFIDLE,我们不能肯定。@IVO GELOV这里有一个指向一个JSFIDLE的链接。希望你知道怎么了,谢谢!小提琴中的错误与问题中的错误不同,问题的问题是
checkedvalue
正在设置,但您使用的是
checkedCategories
,打字错误?笔中的一个是分配一个名为filteredData的方法,但在名为filteredData@LawrenceCherone我重构了我的代码(因为我也在用搜索框进行测试)。你能看到为什么它不过滤吗?也许你的数据部分没有
类别
属性?或者,当您发出事件时,您应该删除
this.checkedCategories
周围的引号?如果没有一个有效的JSFIDLE,我们不能肯定。@IVO GELOV这里有一个指向一个JSFIDLE的链接。希望你知道怎么了,谢谢!小提琴中的错误与问题中的错误不同,问题的问题是
checkedvalue
正在设置,但您使用的是
checkedCategories
,打字错误?笔中的一个是分配一个名为filteredData的方法,但在名为filteredData@LawrenceCherone我重构了我的代码(因为我也在用搜索框进行测试)。你能明白为什么不过滤吗?只有tempOk谢谢。我以后必须将它与搜索过滤器结合起来,因此我必须重写计算属性。也许您可以从我的单个文件组件中了解为什么搜索不起作用?这是到的链接。感谢接受,我在初始编辑中添加了字符串搜索,使用了一些带有索引的搜索。不适合,我会回答另一个问题,是低挂;pdo您知道为什么我不能使用
checkedCategories
作为事件侦听器吗?因为我使用
this.checkedvalue=checkedCategories我不明白,只有tempOk谢谢。我以后必须将它与搜索过滤器结合起来,因此我必须重写计算属性。也许您可以从我的单个文件组件中了解为什么搜索不起作用?这是到的链接。感谢接受,我在初始编辑中添加了字符串搜索,使用了一些带有索引的搜索。不适合,我会回答另一个问题,是低挂;pdo您知道为什么我不能使用
checkedCategories
作为事件侦听器吗?因为我使用
this.checkedvalue=checkedCategories我不明白