Vue-如何识别[__ob__:观察者]?

时间:2019-05-21 14:44:29

标签: vue.js observers

在我的组件中,我遍历作为对象的data属性,以检查是否设置了任何值。 值之一是一个数组,但是当它为空时,当我控制台记录其值时,它将返回

[__ob__: Observer]

如果我测试它是否是数组或对象,则它们中的任何一个都不返回true。 只有将元素添加到数组后,它才能被识别为数组。

我还尝试测试它是否是一个函数(entry[1] === "function")-不正确。

那么[__ob__: Observer]是什么,我该如何进行识别这件事的检查?我需要为此例外。

4 个答案:

答案 0 :(得分:1)

VueJS具有“反应性”,这意味着它们会为您观察对象。因此,在您的基本数据选项中,Vue将为您监视属性。

new Vue({
  data() {
    return {
      myArray: []
    }
  }
})

在这种情况下,myArray将是一个可观察的对象,这只是一个包装器,您仍然可以使用所有标准的数组操作。

这意味着您仍然可以:

if (this.myArray && this.myArray.length > 0) {
 Do something with they array
}

有关VueJS如何处理数据选项的更多信息。 https://vuejs.org/v2/guide/reactivity.html

答案 1 :(得分:1)

如果您的目标是调试Observer Vue实例中包含的内容,这是我的解决方案:

  

打印出template块中的变量属于您的组件

然后,您可以重新格式化输出的结构以观察细节。

例如:

<template>
  <div>
    {{ your_variable }}
  <div>
</template>

希望这会有所帮助。

答案 2 :(得分:0)

如果您的目标是检查数组是否为空,为什么不只检查arrayVariable.length === 0[__ob__: Observer]是具有Vue注入反应性的对象。您可以检查typeof arrayVariable,并且应该得到object

答案 3 :(得分:0)

引自this thread

  

{obv:Observer}表示您的vuex对象为空

和:

  

这是Vue添加的特殊属性,它是Reactivity系统的一部分,该系统允许Vue跟踪数据更改并对它们做出反应:

所以基本上,什么都没有。

在您的情况下,这只是Vue监视以响应更改的空数组。