Vue 從入門到進階之路(六)

上篇文章我們分析了一下 vue 中的條件渲染,本篇我們說一下 vue 中的列表渲染和 set 方法。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>vue</title>
 6     <script src="https://cdn.jsdelivr.net/npm/vue"></script>
 7 </head>
 8 <body>
 9 <div id="app">
10     <ul>
11         <template v-for="(val, index) of list" :key="index">
12             <li>
13                 {{val}}
14             </li>
15         </template>
16     </ul>
17 </div>
18 <script>
19     var app = new Vue({
20         el: '#app',
21         data: {
22             list: ["aaa", "bbb", "ccc"]
23         },
24     })
25 </script>
26 </body>
27 </html>

以上代碼我們在 data 裏定義了一個 list 數組數據,並在 HTML 代碼中通過 v-for 指令循環輸出,其中 template 標籤我們可以稱之爲魔法標籤,它可以進行 js 語法的書寫並且在 HTML 頁面裏不額外佔用標籤。並且在循環的時候我們需要向 React 那樣爲每一個循環對象定義一個 key 值。這樣我們就能將數據循環輸出到頁面,結果如下:

那當我們對 data 裏的 list 數據進行修改時會出現怎樣的結果呢?如下圖:

當我們使用數組的 push 方法時可以對 list 數據進行修改,但是我們直接使用 list[i] = XXX;這樣的方法時無法對 list 數據進行修改的,在 vue 中,尤大大爲我們內置了七個數組的操作方法,分別是:push,pop,shift,unshift,splice,sort,reverse。其他的數組操作不起作用。那我們要是想要向上面的 app.list[i] 這樣的操作該怎麼辦呢?官方爲我們提供了 set ,如下:

通過 set 方法我們就可以改變 list 數組中指定的值了。v-for 不僅可以循環輸出數組,還可以循環字符串,對象,當然循環輸出字符串可能沒什麼意思,我們來看一下對象的循環輸出:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>vue</title>
 6     <script src="https://cdn.jsdelivr.net/npm/vue"></script>
 7 </head>
 8 <body>
 9 <div id="app">
10     <ul>
11         <li v-for="(val, key, index) of list" :key="index">
12             {{key}} - {{val}} - {{index}}
13         </li>
14     </ul>
15 </div>
16 <script>
17     var app = new Vue({
18         el: '#app',
19         data: {
20             list: {
21                 name: "zhangsan",
22                 age: 30,
23                 sex: "",
24             }
25         },
26     })
27 </script>
28 </body>
29 </html>

運行結果如下:

當我們像上面的 list 數組那樣操作對象時結果是如何呢:

可以看出當我們修改原有的 age 數據時是可以重新渲染 DOM 的,但是當我們在原有的對象上添加新的屬性時無法更新 DOM,那我們就可以利用 set 方法來實現,如下:

我們發現使用 set 方法是完全可以的,需要注意的是對象的 key 和 value 都需要添加引號。

其實在 v-for 中的循環 of 在上面的例子中可以被 in 代替,但我們建議使用 for of,這是由於 for in 會循環 js 原型鏈上的內容,在之前的 ES6 文章中我們說過這個問題,這裏就不再着重說明了。

 

原文出處:https://www.cnblogs.com/weijiutao/p/10676160.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章