嵌套的对象数组和v-for

时间:2016-05-30 22:16:01

标签: vue.js

嗯,这个问题让我感到难过......在嵌套的for循环数据出现时遇到一些麻烦:

<div v-if = "private.folders!=null" v-for="folder in private.folders">
{{folder.name}}
    <div v-for="check in folder.checks">
        {{check.name}}
    </div>
</div>

然后我尝试使用的数据如下所示:

folders [Array]
-object [this is a single 'folder']
--name
--checks [array] [each folder has this array]
---[object] [the actual 'check' object]
----[name]

外部循环工作得很好,并返回我期望的数据。但是,check.name不会返回任何内容,并且控制台中没有错误。是否可以像这样做嵌套的for循环?

2 个答案:

答案 0 :(得分:24)

我测试了你的模板,它的作品。

&#13;
&#13;
 new Vue({
  el: '#sample',
  data: {
    private: {
      folders : [{
          name : 'folder1',
          checks : [
            { name : 'check1.1' },
            { name : 'check1.2' }
          ]
        },
        {
          name : 'folder2',
          checks : [
            { name : 'check2.1' },
            { name : 'check2.2' }
          ]
        }
      ]
    }
  }
})
&#13;
<script src="https://cdn.jsdelivr.net/vue/latest/vue.js"></script>
<div id="sample">
  <div v-if = "private.folders!=null" v-for="folder in private.folders">
  {{folder.name}}
      <div v-for="check in folder.checks">
          {{check.name}}
      </div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用HTML表格进行设置:

new Vue({
  el: '#sample',
  data: {
    private: {
      folders : [{
          name : 'folder1',
          checks : [
            { name : 'check1.1' },
            { name : 'check1.2' }
          ]
        },
        {
          name : 'folder2',
          checks : [
            { name : 'check2.1' },
            { name : 'check2.2' }
          ]
        }
      ]
    }
  }
})
<script src="https://cdn.jsdelivr.net/vue/latest/vue.js"></script>
<div id="sample">
<table>
  <tr>
    <th>Folder</th>
    <th>Checks</th>
    <th>Checks</th>
  </tr>
  <tr v-if = "private.folders!=null" v-for="folder in private.folders">
  <td><b>{{folder.name}}</b></td>
      <td v-for="check in folder.checks">
         {{check.name}}
      </td>
  </tr>
</table>
</div>