JSFiddle - React, Tailwind, and code Playground
HTML
<div id="productSelect">
<li v-bind:class="{'active' : item.selected}" v-for="(item, index) in realList" @click="selectItem(index)">{{item.name}}</li>
</div>
CSS
* {
user-select: none;
}
li {
color: blue;
}
li.active {
color: red;
}
JavaScript
var productChoice = new Vue({
el: "#productSelect",
data: {
list: [],
realList: []
},
created: function() {
this.loadDate();
},
methods: {
loadDate: function () {
//AJAX, 成功后传一个 Array 给 printProductList
let arr = [
{name: 'string4'},
{name: 'string5'},
{name: 'string6'}
]
setTimeout(() => {
this.list = arr;
this.printProductList(arr);
}, 3000)
},
selectItem: function(i) {
this.realList[i].selected = !(this.realList[i].selected);
},
printProductList: function(arr) {
let list = [];
for(x in arr) {
//经过某从筛选,通过的 push 到 list
arr[x].selected = false; //每个条目中原先是没有 selected 这个属性的,这里加上去
list.push(arr[x]);
}
this.realList = list;
}
}
})