vueで渡すオブジェクトのオブジェクトがあり、これを実行するためにこれを行っています:
<ul>
<li v-for="subjects in questions">
<li v-for="question in subjects">
@{{ question }}
</li>
</li>
</ul>
しかし、私はこのエラーを得ています:
プロパティまたはメソッド「subjects」はインスタンスで定義されていませんが、レンダリング中に参照されます。必ず、データオプションで反応データプロパティを宣言してください。 (ルートインスタンスにあります)
Vueでネストされたループを実行するにはどうすればよいですか?
ここでは例を示します。
var vm = new Vue({
el: '#app',
data: {
questions: [
{
subjects: ['question 1.1', 'question 1.2']
},
{
subjects: ['question 2.1', 'question 2.2']
}
]
}
})
<script src="https://cdn.jsdelivr.net/vue/2.0.3/vue.js"></script>
<div id="app">
<ul>
<li v-for="question in questions">
<ul>
<li v-for="subject in question.subjects">
{{ subject }}
</li>
</ul>
</li>
</ul>
</div>
受け入れられた回答は、プロパティとして作成されたオブジェクト内の配列に対処します。単純な多次元配列の反復を探していたところ、このページが表示されました。したがって、後世のためにその答えも追加します。
new Vue({
el: '#app',
data: {
questions: [
['test1.1', 'test1.2'],
['test2.1', 'test2.2']
]
}
})
<script src="https://unpkg.com/vue"></script>
<div id='app'>
<ol>
<li v-for="subjects, index in questions">
{{ index }}
<ol type='I'>
<li v-for="question in subjects">
{{ question }}
</li>
</ol>
</li>
</ol>
</div>
IOW、問題のサンプルの問題は、サブリストのグループ化なしで、親<li/>
内にネイキッドネスト<li/>
が追加されていることです。