Vue中v-for指令失效转注释及绑定相关问题求助
Vue v-for 与实例挂载相关问题解答
一、v-for 无法在实例绑定元素上生效的原因
核心结论:Vue 2 中,v-for 不能直接用在绑定实例的根元素上。
Vue 实例通过el挂载到指定DOM元素时,这个元素会作为模板的根节点。而Vue 2的模板要求必须有且仅有一个根节点,如果在根元素上使用v-for,相当于试图生成多个根节点,违反了模板结构规则。此时Vue会自动忽略这个v-for指令,将其转为注释,且不会在控制台报错(这属于模板结构合规性问题,而非运行时错误)。
你修改后的代码之所以正常工作,是因为把v-for移到了根元素的子节点上:
<div id="game_board_block"> <div v-for="num in 10">{{num}}</div> </div>
此时#game_board_block作为唯一的根节点,内部的v-for负责生成多个子元素,完全符合Vue 2的模板要求,所以能正常渲染。
二、脚本必须放在目标元素下方的原因
这和浏览器的HTML解析机制直接相关:
- 浏览器是从上到下依次解析HTML内容的,当脚本放在目标div之前(比如head标签里)执行时,对应的div元素还未被解析,DOM中不存在这个节点。
- Vue实例挂载时,找不到
el指定的DOM元素,无法完成挂载流程,所有Vue指令自然不会生效。
把脚本放在div下方,就能确保执行脚本时,目标元素已经存在于DOM中,Vue可以成功挂载并处理指令。
内容的提问来源于stack exchange,提问作者wuhu
相关产品推荐
相关产品推荐

