【发布时间】:2018-08-24 03:08:38
【问题描述】:
我有一个这样的对象:
myObject: {
items: [{
title: '140',
isActive: true,
}, {
title: '7',
isActive: false
}, {
title: '10',
isActive: false
}]
}
我是这样使用的:
<my-component :items="myObject.items"></my-component>
这是组件的样子:
<template>
<div class="i-panel panel-container d-flex"
<div
v-for="item in prefs.items"
class="panel-item"
@click="onClick(item)">
<!-- some content -->
</div>
</div>
</template>
<script>
export default {
name: 'IPanel',
props: {
items: {
type: Array,
default () {
return []
}
}
},
computed: {
// code
prefs () {
return {
items: this.items
}
}
},
methods: {
onClick (item) {
this.prefs.items.forEach(item => {
if (JSON.stringify(item) === JSON.stringify(clickedItem)) {
item.isActive = true
}
})
}
}
}
</script>
当我单击一个项目时(并且 item 与 clickedItem 相同),它应该变为 isActive true。确实如此。但我必须刷新 Vue devtools 或重新渲染页面才能使更改生效。
为什么item.isActive = true 没有反应性?
【问题讨论】:
-
在您的
onClick方法中,您使用的是clickedItemobject,但我无法在任何地方看到它的定义