2016-02-17 11 views
18

è possibile rimuovere elementi specifici dalle liste. Ho provato questo funzioni per l'elemento rimuoviVUEJS rimuove l'elemento dagli elenchi?

pop() = rimuovere l'ultimo elemento

$ rimuovere (indice) = Non rimuovere alcun elemento da liste

remove (indice) = undefined function

unshift (indice) = aggiungere nuovo e vuoto elemento

splice (indice) = rimuovere tutti gli elementi dall'indice

per favore aiutami a rimuovere elementi specifici dalle liste.

sotto è il mio codice js

var example2 = new Vue({ 
    el: '#example-2', 
    data: { 
    items: [ 
     { message: 'Foo' }, 
     { message: 'Bar' }, 
     { message: 'Bar1' }, 
     { message: 'Bar2' }, 
     { message: 'Bar3' }, 
     { message: 'Bar4' } 
    ] 
    }, 
    method : { 
    removeElement : function(index){ 
     this.items.$remove(index); 
    } 
    } 
}) 

sotto è il mio codice HTML

<ul id="example-1"> 
    <li v-for="(key, item) in items"> 
    {{ item.message }} 
    <button v-on:click="removeElement(key)">remove</button> 
    </li> 
</ul> 
+1

@Lukasz Wiktor ha la risposta giusta per Vue versione 2.2.0+. Per Vue.js 2: v-for = "(chiave, elemento) negli elementi" deve essere v-for = "(elemento, indice) negli elementi" e per Vue.js 2.2.0+ è necessario l'attributo chiave: < li v-for = "(articolo, indice) negli articoli": chiave = "articolo"> https://github.com/vuejs/vue/releases/tag/v2.2.0?utm_campaign=Revue%20newsletter&utm_medium=Newsletter&utm_source=revue – SLYcee

risposta

33

$remove è deprecato in Vue.js 2.0 e sostituito dal splice come indicato nella documentazione. Assicurati di aggiungere il 2 ° parametro di splice affinché funzioni.

Migration From Vue 1.x - 2.0

methods: { 
    removeElement: function (index) { 
    this.items.splice(index, 1); 
    } 
} 
13

È possibile utilizzare Vue.delete se la versione Vue è 2.2.0+

Vue.delete(this.items, index); 
+1

L'ho usato ('Vue.delete (state.items, 'someitem')') quando si utilizza l'archivio vuex poiché 'state' non ha un metodo' $ delete' o 'delete'. – james2doyle

3

La caratteristica $.remove è stato sostituito con $.delete.

Si può chiamare in questo modo:

this.$delete(this.someItems, itemIndex).

Funziona su Object e su Array. Con gli oggetti, è necessario utilizzare un oggetto con chiave. Con gli array, si passa all'indice dell'elemento che si desidera eliminare.

Ecco un esempio di violino: https://jsfiddle.net/james2doyle/386w72nn/

EDIT

Ho aggiunto un esempio per una matrice così

+0

Ho provato questo. $ Elimina su un array, rende il valore appropriato "indefinito", ma non lo rimuove dall'elenco. – pilat

+0

@pilat Ho aggiornato l'esempio per gestire anche gli array. – james2doyle

+0

Impossibile utilizzare gli strumenti di sviluppo Vue su JS fiddle. Ma nel mio caso è stato negli strumenti di sviluppo Vue in cui ho notato che l'array è diventato qualcosa del tipo: '['A', indefinito, 'B', 'C']', dopo che ho usato 'this. $ Delete() '. Nell'interfaccia utente visiva sembrava tutto ok, però. P.S .: con 'myArray.splice (index, 1)' non c'era questo problema. Io, ho ragione sia nell'interfaccia utente che nei Vue Dev Tools. – pilat

0

$ cancellare può usare inline in @Fare clic:

<ul id="example"> 
    <li v-for="(item, key) in items"> 
     {{ item.message }} 
     <button @click="$delete(items, key)">remove</button> 
    </li> 
</ul> 

https://vuejs.org/v2/api/#vm-delete

Problemi correlati