Zum Beispielcode:
Schritt 1: Holen Sie sich ein Datenobjekt-Array vom Server: [obj, obj, obj],
Schritt 2: Fügen Sie jedem Unterobjekt ein Browser-Objekt obj hinzu:
for(let i = 0; i<array.length; i++){
array[i].myObj = false,
}
添加之后的结果是每一个数组子对象obj中的属性里面就会多了一个自定义的浏览器对象属性:myObj:false
Schritt 3: Binden Sie dieses Attribut an die HTML-Struktur, um die dynamische Klasse zu steuern
html:
<ul>
<li v-for='item in array' @click='changeBg(item)'>
<span :class='{'change_bg':item.myObj}'>qwer</span>
</li>
</ul>
js:
methods: {
changeBg(item){
item.myObj = true
}
}
css:
.change_bg
background: red
Das Ergebnis ist: Das myobj-Attribut wurde bei jedem Klicken in true geändert, aber die dynamische Klasse wird erst wirksam, wenn ul aktualisiert wird (bei der Aktualisierung werden die ul-Daten nicht erneut abgerufen).
楼上正解。因为属性是动态添加的,需要使用vue提供的set方法,使该属性为ES5的访问器属性,即可追踪变化。