zoukankan      html  css  js  c++  java
  • 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 文章中我们说过这个问题,这里就不再着重说明了。

  • 相关阅读:
    PHP编程资源
    JSP+Java编程资源
    Word、Excel办公书的资源下载
    听你说
    一些好看的渐变色(配色)网站推荐
    js判断数组中是否包含某个元素
    你才是你故事的作者
    vue-color 颜色选择器插件用法介绍
    vue-cli3 导入.md文件,vue中markdown文件的解析与渲染
    新版 animate.css 在vue中的正确使用
  • 原文地址:https://www.cnblogs.com/weijiutao/p/10676160.html
Copyright © 2011-2022 走看看