vue js不要更新模型

时间:2017-10-03 17:26:19

标签: javascript vuejs2

我在vuejs(版本2)上有一个奇怪的行为:

我有一个更新模型数据的方法,这个方法名为" AddServizi ",使用v-on触发:单击并完美运行:

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;
    }

这更新了&#34; servizi_selezionati&#34;在vue中定义的数据

问题 现在我试图触发&#34; AddServizi&#34;在vue实例中使用另一个方法的方法,该方法是从子组件调用的:

儿童成分法......

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

..调用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 个答案:

答案 0 :(得分: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