我有一个 Vue.jstext-input
组件,如下所示:
<template>
<input
type="text"
:id="name"
:name="name"
v-model="inputValue"
>
</template>
<script>
export default {
props: ['name', 'value'],
data: function () {
return {
inputValue: this.value
};
},
watch: {
inputValue: function () {
eventBus.$emit('inputChanged', {
type: 'text',
name: this.name,
value: this.inputValue
});
}
}
};
</script>
我text-input
在另一个组件中使用它,如下所示:
<ul>
<li v-for="row in rows" :key="row.id">
<text-input :name="row.name" :value="row.value">
</text-input>
</li>
</ul>
然后,在使用 的组件的 JS 中text-input
,我有如下代码用于删除li
行:
this.rows = this.rows.filter((row, i) => i !== idx);
该方法正确地从数组filter
中删除具有索引的行,并且在父组件中,我可以确认该行确实消失了,但是,如果我有例如两行,第一行的值为第二个值为,然后我删除第一行,即使剩余行的值为,我仍然在文本输入中看到。idx
rows
1
2
2
1
为什么?我不明白为什么 Vue.js 不更新文本输入的值,即使值value
明显从1
to改变2
,我可以在父组件中确认。
也许我只是不了解 Vue.js 和v-model
工作原理,但似乎文本输入的值应该更新。任何建议/解释将不胜感激。谢谢你。