我有两个组件:父项和子项。在这两个组件中,我都使用了Bootstrap表,它们的“项”和“字段”来自API。Child component
应该向Parent component
传递数据(对于每个表行,为true或false)。我想将此数据从子组件分配给父组件引导表行对象。你可以在下面看到我的代码。
所以,问题是v-if
语句不起作用。看起来好像对象'state'
是在组件创建之前分配的,因为在console.log
上我可以看到新的'state'
对象在那里,并且正确地填充了true/false,但在DOM中情况不同,state
是未定义的。
任何人谁可以帮助我如何设置'state'
对象,并使其工作?
父组件:
<template>
<b-table v-else :items=“customItems” :fields="fields" responsive>
<template v-slot:cell(config)="row">
<child-component
@onitembind='isSingleRow'>
</child-component>
</template>
</b-table>
</template>
<!-- Checkbox column -->
<template v-slot:cell(labelCheckbox)="row">
<div class="label-checkbox" v-if="row.item.state">
<span><i class="fa fa-angle-up text-primary">
</div>
</template>
<script>
methods: {
isSingleRow(event) {
this.singleRow.push(event);
for(let i in this.customItems){
this.customItems[i].state = this.singleRow[i]
console.log('EHO ', i, ' ', this.customItems[i]);
}
}
}
</script>
字符串
子组件:
<script>
created() {
this.tableRowsLength()
},
methods: {
tableRowsLength () {
if((this.innerTableItems.length) != 1){
this.$emit('onitembind', true)
} else{
this.$emit('onitembind', false)
}
}
}
</script>
型
1条答案
按热度按时间8yparm6h1#
在Vue 2中,向现有对象添加属性不会是React式的,因为Vue无法正确地为属性添加getter/setter。
要解决这个问题,您应该使用
Vue.set
/this.$set
方法。this.$set(this.customItems[i], 'state', this.singleRow[i])
个有关详细信息,请参阅:https://v2.vuejs.org/v2/guide/reactivity.html#For-Objects