Szukaj…


Wprowadzenie

Podczas próby ustawienia wartości elementu na określonym indeksie tablicy zainicjowanej w opcji danych, vue nie może wykryć zmiany i nie wyzwala aktualizacji stanu. Aby pokonać to zastrzeżenie, należy albo użyć zestawu Vue. $ Vue, albo metody Array.prototype.splice

Korzystanie z Vue. $ Set

W twojej metodzie lub dowolnym haku cyklu życia, który zmienia element tablicy przy określonym indeksie

new Vue({
    el: '#app',
    data:{
        myArr : ['apple', 'orange', 'banana', 'grapes']
    },
    methods:{
        changeArrayItem: function(){
            //this will not work
            //myArr[2] = 'strawberry';
            
            //Vue.$set(array, index, newValue)
            this.$set(this.myArr, 2, 'strawberry');
        }
    }
}) 

Oto link do skrzypiec

Korzystanie z Array.prototype.splice

Możesz wykonać tę samą zmianę zamiast używać Vue.$set za pomocą splice() prototypu Array splice()

new Vue({
    el: '#app',
    data:{
        myArr : ['apple', 'orange', 'banana', 'grapes']
    },
    methods:{
        changeArrayItem: function(){
            //this will not work
            //myArr[2] = 'strawberry';
            
            //Array.splice(index, 1, newValue)
            this.myArr.splice(2, 1, 'strawberry');
        }
    }
}) 

Dla zagnieżdżonej tablicy

Jeśli masz zagnieżdżoną tablicę, możesz wykonać następujące czynności

new Vue({
    el: '#app',
    data:{
        myArr : [
            ['apple', 'banana'],
            ['grapes', 'orange']
        ]
    },
    methods:{
        changeArrayItem: function(){
            this.$set(this.myArr[1], 1, 'strawberry');
        }
    }
})

Oto link do jsfiddle

Tablica obiektów zawierających tablice

new Vue({
    el: '#app',
    data:{
        myArr : [
            {
                name: 'object-1',
                nestedArr: ['apple', 'banana']
            },
            {
                name: 'object-2',
                nestedArr: ['grapes', 'orange']
            }
        ]
    },
    methods:{
        changeArrayItem: function(){
            this.$set(this.myArr[1].nestedArr, 1, 'strawberry');
        }
    }
}) 

Oto link do skrzypiec



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow