【问题标题】:Updating data from a component从组件更新数据
【发布时间】:2018-12-04 12:45:35
【问题描述】:

基本上我有一个接收对象数组的组件。我的目标是更新该组件内的数据,从该数组中添加或删除一些项目。 代码看起来像这样:

export default {
    props: ['data'],
    methods: {
        add: function() {
            this.data.push({ someVal })
        },
        remove: function() {
            this.data = this.data.filter( item => {
                return item.val !== someVal;
            })
        },
    }
}

对我来说棘手的部分是“添加”方法可以正常工作并更新整个应用程序中的数据。但是“删除”方法没有。谁能给我一个线索?

【问题讨论】:

  • 尝试拼接数组this.data = this.data.splice(index, 1)。您应该在 remove 函数中添加一个 index 参数并将其填充到您的 v-for 模板中。 vue index v-for

标签: vue.js vue-component


【解决方案1】:

过滤器中的变量 someVal 未定义,因此它将返回相同的项目。

要删除一个项目,您可以使用 splice() 函数。

例子:

remove: function(index) {
    this.data = this.data.splice(index, 1);
}

在您的模板中使用如下内容:

<div v-for="(item, index) in data" @click="remove(index)"></div>

【讨论】:

  • 过滤器中的变量 someVal 未定义,因此它将返回相同的项目。 这只是一个示例,过滤器方法可以完美地完成它的工作,但数据仍然没有出于某种原因不更新。但是,您使用拼接方法的解决方案有效,感谢您的帮助。不幸的是,我在另一个组件中有我的“v-for”循环,所以现在我应该考虑如何将索引传递给这个。
  • @stahlhammer 你的父组件有一个 v-for 而你的子组件使用一个过滤器?这意味着您的数据结构是多维数组?除此之外,“数据”被用作属性。向父组件发出事件并在其中更新数据会更干净。
猜你喜欢
  • 2019-02-17
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 2017-09-01
  • 2019-05-18
相关资源
最近更新 更多