我在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,但这次方法没有更新模型...... 有谁知道为什么?提前谢谢你
答案 0 :(得分:2)
问题是,当你使用像this.servizi_selezionati_desktop[0].lineaApparte = classe;
这样的东西时,你就会绕过vue的反应。
你应该使用Vue.set(this.servizi_selezionati_desktop[0], lineaApparte, classe)