在我的组件中,我遍历作为对象的data属性,以检查是否设置了任何值。 值之一是一个数组,但是当它为空时,当我控制台记录其值时,它将返回
[__ob__: Observer]
。
如果我测试它是否是数组或对象,则它们中的任何一个都不返回true。 只有将元素添加到数组后,它才能被识别为数组。
我还尝试测试它是否是一个函数(entry[1] === "function"
)-不正确。
那么[__ob__: Observer]
是什么,我该如何进行识别这件事的检查?我需要为此例外。
答案 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监视以响应更改的空数组。