如何在 vue.js 2 上循环对象观察者?

Posted

技术标签:

【中文标题】如何在 vue.js 2 上循环对象观察者?【英文标题】:How can I loop object observer on vue.js 2? 【发布时间】:2018-05-03 10:30:12 【问题描述】:

如果我console.log(this.list),结果是这样的:

this.list.forEach(function (user) 
    selected.push(user.id);
);

存在错误:

未捕获的类型错误:this.list.forEach 不是函数

我该如何解决这个错误?

【问题讨论】:

试试Array.from(this.list).forEach? 您是否正在检查并进入同一块 console.log(this.list)this.list.forEach 由于它是被动的,您可能看不到初始数据。您是否将初始数据设置为空数组? 【参考方案1】:

this.list 不是数组吗?

如果this.list 类似于数组(该对象上必须有length 属性),您应该可以这样做:

Array.prototype.forEach.call(this.list, user => 
  // ...
)

Array.from(this.list).forEach(user => 
  // ...
)

[...this.list].forEach(user => 
  // ...
)

否则如果this.list只是一个普通对象,你可以这样做:

Object.keys(this.list).forEach(key => 
  const user = this.list[key]
  // ...
)

Object.entries(this.list).forEach(([key, user]) => 
  // ...
)

【讨论】:

【参考方案2】:

这是一种在 Vue 中遍历观察者数组的方法:

let keys = Object.keys(myObserverArray);

keys.forEach(key => 
   let item = myObserverArray[key];
   //...work with item
)

【讨论】:

以上是关于如何在 vue.js 2 上循环对象观察者?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 观察深层属性

vue.js中$watch的用法示例

使用 Vuex 在 Vue.js 中的计算属性上未从观察者更新数据变量

Vue js数组反向导致v-for循环出错

如何在 vue.js 组件属性中禁用数据观察

尝试在 Angular 2 中循环可观察对象时出错