Vue JS не обновлять модель

1

У меня странное поведение на vuejs (версия 2):

У меня есть метод, который обновляет данные модели, этот метод с именем "AddServizi" запускается с помощью v-on: click и он отлично работает:

HTML

                        <input 
                    type="radio" 
                    v-bind:id="['gialla-'+index]"
                    name="serviziGialla" 
                    v-bind:value="servizio.nomeServizio"
                    v-model="giallaPicked"
                    v-on:click="AddServizi(servizio.selected,servizio.classe,servizio.nomeServizio,servizio.descrizione,servizio.descrizione_lunga,index,servizio.x,servizio.y)"/>
                    <label 
                    v-bind:for="['gialla-'+index]"
                    ><span></span>
                    </label>

JS

    AddServizi: function(selected,classe,nomeServizio,descriziones,descrizione_lungas,index,x,y){
    $("#sottoSelezionati").removeClass("in");
    this.servizi_selezionati.splice(0);
    if(selected==null){selected=false};
    if(!selected){
        this.servizi_selezionati.push({
            lineaApparte:classe,
            servizio:nomeServizio,
            descrizione : descriziones,
            descrizione_lunga : descrizione_lungas,
            index:index,
            x:x,
            y:y
        });
        this.servizi_selezionati_desktop[0].lineaApparte = classe;
    }

это обновление данных "servizi_selezionati", определенных в vue

ПРОБЛЕМА теперь я пытаюсь запустить метод "AddServizi", используя другой метод в экземпляре vue, который вызывается из дочернего компонента:

ДЕТСКИЙ КОМПОНЕНТНЫЙ МЕТОД...

        this.$emit('centramappa',{nomeServizio,x,y,selected,classe,index,descrizione,descrizione_lunga});
    }   

..CALLED IN HTML

                    <lista-servizi-gialla 
                :servizi="modello"
                :extdesktop="servizi_selezionati_desktop[0].lineaApparte" 
                v-on:centramappa="mappaCenter($event)" 
                v-on:linebigger="inebigger($event)"
                v-on:cambiacolore="evidenziaLineaDiversa($event)"
                >
                </lista-servizi-gialla>

..MAIN JS

mappaCenter : function({nomeServizio,x,y,selected,classe,index,descrizione,descrizione_lunga}){
  this.AddServizi(selected,colore,nomeServizio,descrizione,descrizione_lunga,index,x,y);
}

mappacenter вызывает AddServizi, но на этот раз метод не обновляет модель... кто-нибудь знает почему? заранее спасибо

  • 1
    Есть jsfiddle?
  • 0
    слишком долго для внутреннего воспроизведения
Показать ещё 1 комментарий
Теги:
vuejs2

1 ответ

2

проблема в том, что когда вы используете что-то вроде this.servizi_selezionati_desktop[0].lineaApparte = classe; , вы обходите реактивность vue.

вы должны использовать Vue.set(this.servizi_selezionati_desktop[0], lineaApparte, classe)

подробнее здесь: https://vuejs.org/v2/guide/reactivity.html

  • 0
    хороший совет, но, кажется, не работает ... плюс, когда функция вызывается нажатием на консоль, возвращает мне ReferenceError: lineaApparte не определено

Ещё вопросы

Сообщество Overcoder
Наверх
Меню