列表渲染,将整个列表绑定一个长度对应的数组,为什么数据绑定不成功?
发布于 7 年前 作者 HIceFire 3529 次浏览 最后一次编辑是 7 年前 来自 问答
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利

大家好。 我需要渲染一个li列表,将每个li的class绑定到数组items中对应的位置,点击li后改变items[index],从而改变li的class。 但是结果并不如我所愿,items[index]确实改变了,但li的class并没有如愿的改变。 主要代码如下,请教各位朋友,是我什么地方写错了吗?

Vue.component('v-choice', {
	props: ['question'],
	data: function () {
		return {
			items: [],
		}
	},
	methods: {
		getAnswer: function (index) {
			this.items[index] = 'active'
			console.log(this.items)		// 这里是显示 items[index] 确实被赋值成active了
		}
	},
	created: function() {
		let len = this.question.options.length
		let items = []
		for ( let i = 0; i < len; i++ ) {
			items[i] = ''
		}
		this.items = items
	},
	template: `
		<ul class="qt-items">												// 可是此处的 class 并没有随着数据的 items[index]的改变而改变
			<li v-for="(option, index) in question.options" v-bind:class="items[index]" @click="getAnswer(index)">
				<div class="qt-item-order"><em>{{ numToLetter(index) }}</em></div>
				<div class="qt-item-detail"><p>{{ option.answer }}</p></div>
			</li>
		</ul>`
})
回到顶部