我正在使用 Ajax 填充多个对象的数据属性。因此,我想要绑定(bind)的属性在绑定(bind)时并不存在。
例如:
<template>
<my-list v-bind:dataid="myobject ? myobject.data_id : 0"></my-list>
</template>
<script>
export default {
data () {
return {
myobject: {}
}
}
</script>
在 Vue 文档中 https://012.vuejs.org/guide/best-practices.html它提到初始化数据而不是使用空对象。
但是,我使用多个 Ajax 创建的对象,其中包含数十个参数和子参数。要初始化所有对象的每个子参数,如下所示:
myobject: { subp1: [], subp2: [] ...}
其中 myobject 可以是包含对象数组的对象,或者例如包含对象子数组的对象数组。
需要做很多工作。绑定(bind)到“尚未存在”的对象时是否有更好的选择?
最佳答案
首先,空数组仍然是“真实的”,所以你在这里检查
v-bind:dataid="myobject ? myobject.data_id: 0"
始终返回 true。您应该检查 myobject.length
。您的代码现在应该可以工作了。
此外,您确实不需要为数组定义虚拟对象。每当你改变数组时,Vue 都会检测到。
https://v2.vuejs.org/v2/guide/list.html#Array-Change-Detection
关于javascript - VueJS 不存在对象的数据初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43444878/