vue.js - Vue - 删除子对象后迭代对象
问题描述
我遇到了一个问题,该问题在 SO 和其他论坛上有很好的记录,其中一个人遍历数组并收到错误,因为该对象可能未在 DOM 中定义或可能尚未加载。
例如下面的 - 如果name
orchild
也被迭代,你会得到一个undefined
错误 - 因为child
尚未定义。但是,如果您要添加{ child: { name: '' } }
到parent
对象中,它可以正常工作,因为它已被定义。
<p> {{ parent.child.name }} </p>
data: () => ({
parent: {}
})
可以通过测试看看parent
对象是否没有这样的数据来解决这个问题:
<div> v-if="Object.keys(parent).length != 0" >
<p> {{ parent.child.name }} </p>
</div>
我遇到的问题是,如果我: 1.使用嵌套对象创建页面。2. 向对象添加新数据。3. 删除添加的数据。
由于嵌套数组不再退出,我得到一个未定义的错误。
我可以再次重新添加空嵌套数组,但它们必须是一种更巧妙的方法来检查对象是否为空。
解决方案
在 vue 中,您可以使用watch
属性来保持跟踪。
new Vue({
el: '#app',
data: () => ({
parent: {
child: {}
}
}),
watch: {
parent: function(val) {
console.log(val.child.length);
if (val.child.length === 0) {
this.parent.child = {};
}
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<p> {{ parent.child.name }} </p>
</div>
推荐阅读
- spring - Spring RabbitMQ 无法读取架构文档
- javascript - 当您单击 datepicker 时,Bootstrap offcanvas 会阻止关闭 offcanvas
- css - 单击 mat-menu-item 时如何禁用灰色“擦除”效果
- c - 如何使用 POSIX 通过父进程返回 cJSON 片段?
- kubernetes - Flannel 接口不在 kubernetes 工作节点上创建
- firebase - 以编程方式/CLI 删除 Firestore 索引
- python - 尝试平均字典中每个键的值后无法正确绘制图表
- matlab - 如何在 Matlab 中正确继承 TCPIP 类?
- python - 在张量流中以另一个张量作为种子生成随机序列
- amazon-web-services - aws appsync 组合过滤器运算符