动态创建组件总是删除最后一个实例 [英] Creating Component Dynamically always removes last instance

查看:17
本文介绍了动态创建组件总是删除最后一个实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 child 组件和 parent 组件.父组件动态呈现子组件,即按需呈现并将记录保存在数组中.当子组件要求删除时,它会发出事件并因此传递其 ID 以在记录中进行标识.虽然记录确实根据 id 被删除,但最后创建的实例总是被删除.即使你点击第一个孩子,它也只会删除最后一个.

这里是与我的情况相同的链接,但只是形式简单.我对 SO 进行了研究,发现这个 answer 的小提琴是 这里.所以我确实在另一个 fiddle 中遵循了它的模式,但结果没有什么不同.

我不知道这里有什么问题...我做错了什么?

更新 1:添加代码

更新 2:如果您想跳过下面的链接,请检查第一个链接

ChatPanel.vue

 <模板><div class="chat-c​​ontainer"><div class="columns" style="justify-content: flex-end;"><div class="column is-3" style="order: 1;"><div class="聊天面板"><nav class="面板状态" :class="[statusIn ? 'in' : 'out']"><p class="面板标题">阿尔巴布·纳扎尔<span id="click-handle" @click="toggleState"></span></p><div class="panel-block"><p class="control has-icons-left"><input class="input is-small" type="text" placeholder="search"><span class="icon is-small is-left"><i class="fa fa-search"></i></span></p>

<p class="panel-tabs"><a class="is-active">all</a><a>在线</a><a>睡觉</a></p><聊天列表/></nav>

<chat-window v-for="(window, index) in windows":身份=索引"v-on:remove-window="removeWindow(window)"/>

</模板><脚本>从'./ChatList'导入聊天列表从 './ChatWindow' 导入 ChatWindow从'../Events/Bus.js'导入总线导出默认{name: '聊天面板',数据 () {返回 {状态输入:真,窗户:[],身份证号码}},安装(){Bus.$on('new-window', (data)=> {this.windows.push((this.windows.length+1))})},方法: {切换状态(事件){event.stopPropagation()this.statusIn = !this.statusIn},移除窗口(窗口){this.windows.splice(this.windows.indexOf(window),1)}},成分: {聊天列表,聊天窗口}}

ChatWindow.vue