如何从返回的数据组件 vuejs 中拼接一个子数组?

Posted

技术标签:

【中文标题】如何从返回的数据组件 vuejs 中拼接一个子数组?【英文标题】:how to splice a subarray from returned data component vuejs? 【发布时间】:2017-12-22 10:10:00 【问题描述】:

我有一个对象是数组列表...

..这是在 vue js 中从 prop 声明的数据:

    data: function()
    return
        listaSelezionati:this.selezionati
    

..wich 在 v-for 上呈现

<div class="row" style="margin-bottom:20px;" v-for="(selezionato,index) in listaSelezionati">

..在这个for循环里面有一个调用函数的按钮

<div class="remove pull-right" v-on:click="rimuovi(index)"></div>

..通过这个函数,我想使用“index”拼接对象“listaSelezionati”的子数组,但我不知道该怎么做..

这是我尝试过的:

    methods:
    rimuovi : function(index)
        alert(index);
        return
            this.listaSelezionati[index][0].splice(index,1)
        
    

但它什么也没做,有人有什么建议吗?

编辑1 我想知道returnthis.listaSelezionati 是否应该是编辑组件数据的正确方法

【问题讨论】:

this.listaSelezionati[index][0] 将指向子数组对象。您正在将拼接功能放在对象上。是否要删除特定索引处的子数组? 在某处还有v-for吗? @BertEvans no 是唯一的,但是在 v-for 之前有一个 v-if 你想删除一个子数组吗? @BertEvans 是的,但也知道returnthis.listaSelezionati 是否是修改组件对象的正确方法 【参考方案1】:

如果你想通过索引删除整个子数组,你需要做的就是:

methods:
  rimuovi : function(index)
    this.listaSelezionati.splice(index,1)
  

不需要返回值; splice 更新它被调用的数组。

【讨论】:

【参考方案2】:

您的数组似乎太深入了。

this.listaSelezionati[index]

是一个数组但是

this.listaSelezionati[index][0]

看起来像数组的第一个元素,它是一个对象。所以现在看起来你在一个位置索引处拼接一个对象。这应该会产生错误。 我认为你需要:

rimuovi : function(outterIndex, innerIndex)
    alert(outterIndex, innerIndex);
    return
        this.listaSelezionati[outterIndex].splice(innerIndex,1)
    


<div class="remove pull-right" v-on:click="rimuovi(index, innerIndex)"></div>
// or
<div class="remove pull-right" v-on:click="rimuovi(outterIndex, innerIndex)"></div>

我还没有测试过,但至少它应该让你更接近

【讨论】:

hmm...有趣,我应该使用索引来调用outterIndex和innerIndex吗?

以上是关于如何从返回的数据组件 vuejs 中拼接一个子数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在VueJS中将数据从视图传递到组件

如何从 laravel 刀片加载 vuejs 组件?

VueJS - 如何从方法内的函数更新组件数据?

从 Vuejs 中的多个 Treeview 组件中选择数据

在组件中声明动态数据,Vuejs 2

Vuejs98-从头开始学习Vuex