Vue 列表渲染

我们写的页面需要记录图书的列表

1 // 我们用普通方法写
2 
3 <ol>
4    <li>《撒哈拉的故事》</li>
5    <li>《活着》</li>
6    <li>《围城》</li>
7    <li>《哈利波特》</li>
8 </ol>

浏览器显示:

我们在用vue提供的列表渲染来完成这个例子

 1 <ol id="books-list">
 2     <li v-for="site in sites">
 3       {{site.book}}
 4     </li>
 5   </ol>
 6   <script>
 7    new Vue({
 8      el:"#books-list",
 9      data:{
10        sites:[
11          {book:"《撒哈拉的故事》"},
12          {book:"《活着》"},
13          {book:"《围城》"},
14          {book:"《哈利波特》"}
16        ]
18      }
19    })
20   </script>

浏览器显示:

 在 v-for 块中,我们拥有对父作用域属性的完全访问权限v-for 还支持一个可选的第二个参数为当前项的索引。

我们拥有对父作用域属性的完全访问权限?首先来解释一下这句话:

 1 <ol id="books-list">
 2     <li v-for="(site, index) in sites">
 3         // 在这里就是vue的子作用域在这里我们可以取到父作用域的 site以及index
 4       {{site.book}}
 5     </li>
 6   </ol>
 7   <script>
 8    new Vue({
 9      el:"#books-list",
10      data:{
11        sites:[
12          {book:"《撒哈拉的故事》"},
13          {book:"《活着》"},
14          {book:"《围城》"},
15          {book:"《哈利波特》"}
16        
17        ]
18      
19      }
20    })
21   </script>

(首先上述内容有可能有误,欢迎指正)

 

而index就是 第二个参数---索引值

<ul id="books-list">
    <li v-for="(site, index) in sites">
      {{index}}-{{site.book}}
    </li>
  </ul>
  <script>
   new Vue({
     el:"#books-list",
     data:{
       sites:[
         {book:"《撒哈拉的故事》"},
         {book:"《活着》"},
         {book:"《围城》"},
         {book:"《哈利波特》"}
       
       ]
     
     }
   })
  </script>

(为了更容易看出index的功能我把ol换成了 ul标签)

浏览器显示:

 

 

 

当然我们还可以用of代替in 因为这是最接近JavaScript迭代器的语法

 <li v-for="(site, index) of sites">




一个对象的object


 1 <ul id="v-for-object">
 2     <li v-for="value in object">
 3       {{author}}-{{value}}
 4     </li>
 5  </ul>
 6  <script>
 7    new Vue({
 8      el:"#v-for-object",
 9      data:{
10        author:"作者",
11        object:{
12           "三毛":"《撒哈拉的故事》",
13           "余华":"《活着》",
14           "钱钟书":"《围城》",
15           "J·K·罗琳":"《哈利波特》" 
16        }     
17      }
18    })

显示如下:

要把作者的名字也打印出来,需要添加第二个参数 key

  <li v-for="(value, key) in object">
        {{author}}-{{key}}-{{value}}
  </li>

显示如下

 

但第三个参数是什么呢?没错!就是索引,最终的页面

 

 

 

posted @ 2018-03-05 18:16  珊迪·奇克斯  阅读(216)  评论(0编辑  收藏  举报