【发布时间】:2020-08-15 07:28:38
【问题描述】:
我觉得你只看相关的VueJS代码会更容易,然后我可以解释一下:
new Vue({
el: '#app',
data: {
history: [
{name: 'red', value: '#f00'},
{name: 'not red', value: '#ff0'},
{name: 'also not red', value: '#f0f'},
],
},
components: {
ColorItem: {
template:
`<div>
<input :value="name">
<div class="color-preview" :style="{backgroundColor:hex}"></div>
<span v-html="hex"></span>
<button @click="$emit('remove')">
<i class="fas fa-trash"></i>
</button>
</div>`,
props:
['mode', 'hex', 'name'],
methods: {
removeColor: function(index) {
console.log(index);
this.history.splice(index, 1);
}
},
}
},
// ...
}
在我的 Vue 应用程序中,我在一个名为 history 的变量中的数组中有对象(用名称和值表示颜色)。我正在使用v-for 为历史记录中的每个项目创建一个新的color-item 组件:
<div v-for="(item, index) in history" :key="item.value">
<color-item mode="history" :name="item.name" :hex="item.value" @remove="removeColor(index)">
</color-item>
</div>
我正在尝试从列表中删除颜色,我看到了this beautiful example 如何使用 vue 从列表中删除项目,它使用它们的位置并拼接它。我还看到 this SO answer 使用 map 函数获取位置,但是 pos 对我来说是未定义的,因为 e.hex 是未定义的,并且使用检查器我认为这是因为 Vue 在引擎盖下使用了某种吸气剂并且没有'不只是有我的数据。
在有人告诉我在 v-for 循环中使用组件模板之前,我需要该模板,以便我可以将其用于其他颜色列表(例如,收藏夹)。
我是 Vue 的新手,所以请原谅我的措辞不当,感谢我在学习这个框架时获得的所有帮助。
【问题讨论】:
标签: javascript vue.js vuejs2