使用 p 标记的嵌套 v-for 循环在 Vue.js 中不起作用
Nested v-for loops using p tag doesn't work in Vue.js
我想嵌套 2 个 v-for 循环。它应该很简单,但它不起作用,我不知道为什么。
当我遍历用户并显示他们的名字时,一切正常。当我从会话数组中取出第一个元素并显示它的名称时,这也工作正常。
但是,当我想在嵌套的 v-for 循环中循环访问会话数组时,该数组似乎是空的。这是为什么?
<p v-for="entry in user">
{{entry.name}} //this is working fine
{{entry.session[0].name}} //this is also working fine, so "session" is an array with elements that have the property "name"
<p v-for="session_entry in entry.session"> //this v-for is not executed, as if entry.session would be empty
{{session_entry.name}}
</p>
</p>
data: {
user: [{
name: 'test2name',
session:[
{name:'sessionname'},
{name:'sessionname2'}
]
}]
}
根据此代码片段,它应该可以正常工作。我错过了什么?
https://www.codegrepper.com/code-examples/javascript/vuejs+nested+v-for
当我将外部 p
更改为 div
时,它工作正常,如下所示:
Vue.config.devtools = false;
Vue.config.productionTip = false;
new Vue({
el: '#app',
data: {
user: [{
name: 'test2name',
session: [{
name: 'sessionname'
},
{
name: 'sessionname2'
}
]
}]
}
})
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="app" class="container">
<div v-for="entry in user">
{{entry.name}}
<p v-for="session_entry in entry.session">
{{session_entry.name}}
</p>
</div>
</div>
Nesting p tags is not allowed in HTML
Vue 编译器(处理您的模板)以某种方式知道这一点并编译成如下内容:
<p v-for="entry in user">
{{entry.name}}
{{entry.session[0].name}}
</p>
<p v-for="session_entry in entry.session">
{{session_entry.name}}
</p>
...这会导致错误“条目未定义但在渲染期间被引用”
你可以通过将你的模板粘贴到 vue-compiler-online 并查看右侧的 AST
来检查你自己
顺便说一句,当某些事情没有按预期工作时,您应该始终检查您的浏览器开发工具控制台以获取有用的消息...
我想嵌套 2 个 v-for 循环。它应该很简单,但它不起作用,我不知道为什么。
当我遍历用户并显示他们的名字时,一切正常。当我从会话数组中取出第一个元素并显示它的名称时,这也工作正常。
但是,当我想在嵌套的 v-for 循环中循环访问会话数组时,该数组似乎是空的。这是为什么?
<p v-for="entry in user">
{{entry.name}} //this is working fine
{{entry.session[0].name}} //this is also working fine, so "session" is an array with elements that have the property "name"
<p v-for="session_entry in entry.session"> //this v-for is not executed, as if entry.session would be empty
{{session_entry.name}}
</p>
</p>
data: {
user: [{
name: 'test2name',
session:[
{name:'sessionname'},
{name:'sessionname2'}
]
}]
}
根据此代码片段,它应该可以正常工作。我错过了什么? https://www.codegrepper.com/code-examples/javascript/vuejs+nested+v-for
当我将外部 p
更改为 div
时,它工作正常,如下所示:
Vue.config.devtools = false;
Vue.config.productionTip = false;
new Vue({
el: '#app',
data: {
user: [{
name: 'test2name',
session: [{
name: 'sessionname'
},
{
name: 'sessionname2'
}
]
}]
}
})
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="app" class="container">
<div v-for="entry in user">
{{entry.name}}
<p v-for="session_entry in entry.session">
{{session_entry.name}}
</p>
</div>
</div>
Nesting p tags is not allowed in HTML
Vue 编译器(处理您的模板)以某种方式知道这一点并编译成如下内容:
<p v-for="entry in user">
{{entry.name}}
{{entry.session[0].name}}
</p>
<p v-for="session_entry in entry.session">
{{session_entry.name}}
</p>
...这会导致错误“条目未定义但在渲染期间被引用”
你可以通过将你的模板粘贴到 vue-compiler-online 并查看右侧的 AST
来检查你自己顺便说一句,当某些事情没有按预期工作时,您应该始终检查您的浏览器开发工具控制台以获取有用的消息...