Vue.js与Flask Jinja2数据渲染冲突:单选框value绑定失效
解决Vue单选框v-for循环中value绑定失效的问题
兄弟,一眼就看出问题在哪了!你在input的value属性里用了双大括号{{item.key}}插值,这在Vue里是行不通的——双大括号只能用来插入文本内容(就像你<span>里的{{item.value}}那样),而HTML元素的属性需要用Vue的v-bind指令(或者简写的冒号:)来绑定响应式数据。
修正后的代码
<p v-for="item in questionDataSet.options" :key="item.key"> <label> <input name="question-data-row" type="radio" v-model="requestData.surveyDetails.answerSelection" :value="item.key" <!-- 这里改用:value绑定数据 --> > <span>{{item.value}}</span> </label> </p>
额外提示
别忘了给v-for加上:key属性,这是Vue列表渲染的最佳实践。用每个item的唯一标识(比如这里的item.key)作为key,能帮助Vue更高效地追踪DOM元素,避免一些奇怪的渲染bug。
为什么原来的写法失效?
当你写value="{{item.key}}"时,浏览器会把它当作普通的字符串属性值,不会触发Vue的响应式绑定,最终渲染出来的value就是{{item.key}}这个字面量,而不是你期望的item.key对应的数据值。而<span>里的是文本节点,双大括号插值在这里是生效的,所以item.value能正常显示。
内容的提问来源于stack exchange,提问作者Tamaghna Banerjee
相关产品推荐
相关产品推荐

