【问题标题】:TypeError: Cannot read property 'filter' of undefined at VueComponent.filterKategori (app.js:16260)TypeError:无法读取 VueComponent.filterKategori 中未定义的属性“过滤器”(app.js:16260)
【发布时间】:2019-07-15 09:00:00
【问题描述】:

这是我的代码

computed: {
    filterKategori() {
      var kategori = this.kategori.data.filter(f => {
        return f.induk == null && f.id_klasifikasi == this.id_klasifikasi;
      });

      return kategori;
    }
  },

这是我的结构数据

kategori: {
    current_page: 1
    data: [{id: "01", nama_kategori: "Karya Umum", reorder: 6, ishide: "0", id_klasifikasi: "01", induk: null},…]
    first_page_url: "http://localhost:8002/api/fetch/kategori?page=1"
    from: 1
    last_page: 1
    last_page_url: "http://localhost:8002/api/fetch/kategori?page=1"
    next_page_url: null
    path: "http://localhost:8002/api/fetch/kategori"
    per_page: "10"
}

谁能帮帮我,为什么过滤器不起作用,错误说这无法读取未定义的属性过滤器

【问题讨论】:

  • datakategori 内吗? Bc 从你的 json 我不能确切地说出来。如果它在外面你必须做this.data.filter
  • 是的,数据在类别里面
  • kategori 在您的 Vue elem 上放置在哪里?它应该在data: function () { return { kategori: { } } } 中才能工作
  • 分类放在:data() { return{ kategori: [] } }@RaulRene

标签: javascript laravel vue.js


【解决方案1】:

似乎在其中一个请求中你得到“null”而不是“this.kategori.data”,并且过滤器被称为属性(ECMAScript 中的遗留原因更多https://2ality.com/2013/10/typeof-null.html)关于“null”的更多信息:@987654322 @

你需要对“数据”属性添加额外的检查:

computed: {
    filterKategori() {
      if(!this.kategori.data) return kategori;

      var kategori = this.kategori.data.filter(f => {
        return f.induk == null && f.id_klasifikasi == this.id_klasifikasi;
      });

      return kategori;
    }
  },

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 2019-03-26
    • 2021-10-31
    • 2020-10-22
    • 1970-01-01
    • 2019-05-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多