我真的坚持这个 . 我创建了一个由子组件组成的Vue(2.0)组件,它都是Webpacked等 . 例如,这是父:
<div>
<h1>This is just a title for lulz</h1>
<rowcomponent v-for="row in rows" :row-data="row"></rowcomponent>
</div>
有一个 rows
的道具传给它看起来像这样:
rows: [{ sometext: "Foo"} , { sometext: "Bar" }]
所以我的行组件看起来像这样:
<div>{{ this.sometext }} <button @click="deleteRow">Delete Row</button></div>
而且我觉得在 rowcomponent
上设置一个类似的方法真的很容易:
deleteRow() {
this.delete();
}
我是否需要$向父级发出一些内容并使用其中的行索引将其删除?这让我疯狂 . 所有示例似乎都表明它很容易做到,但是在你有子组件想要删除自己的情况下则不行 .
1 回答
是的,子组件无法删除自身 . 原因是因为
rows
的原始数据保存在父组件中 .如果允许子组件自行删除,则父级上的
rows
数据与已呈现的DOM视图之间将存在不匹配 .这是一个简单的jsFiddle供参考:https://jsfiddle.net/mani04/4kyzkgLu/
如您所见,有一个包含数据数组的父组件,以及通过
$emit
发送事件以删除自身的子组件 . 父级使用v-on
侦听delete事件,如下所示:当从子组件收到
delete-row
事件时,v-for
提供的index
属性可用于调用deleteThisRow
方法 .