【Vue学习总结】3.绑定数据和对象、循环数组渲染数据

接上篇《2. Vue目录结构分析

上一篇我们主要讲解了Vue的目录分析,本篇我们主要来介绍Vue的基础语法,绑定数据、对象,以及如何循环数组和渲染数据。

前几篇我使用的代码编辑器是HBuilder:
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据
HBuilder主要用来开发手机APP端的前端页面比较方便,但由于我们主要目的是开发Web端,暂时不以Web app为主。所以目前比较好用的还是Visual Studio Code:
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据
Visual Studio Code它里面有终端窗口,可以启动项目或者使用其它的npm指令,不用额外打开cmd控制台,然后还有很多其它前端的便捷工具,所以后面的教程不再使用HBuilder,改用VS。

这里我用vs打开之前的项目后,vs就很智能的告诉我,需要下载vue的解析插件,因为不下载插件的话,标签什么的编译器无法识别,也不能给提示:
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据
安装完之后,再看代码,所有的标签和样式就有颜色了,而且可以给提示:

废话不多说,开始本篇的学习。

一、vue代码结构整体介绍

对于前一篇介绍的我们自行搭建的vue-demo1工程, 我们最终要开发的部分,其实也就是组件部分(子组件可扩展开发):
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据
我们先不去关心其它的文件到底什么意思,怎么来用起来,我们先从主组件App.vue入手,去了解vue的一些基本语法,它会让我们后面更好理解整个Vue的结构。我们打开App.vue,可以看到其中的代码结构:

  1. <template>
  2.   <div id="app">
  3.     <img src="./assets/logo.png">
  4.     <h2>你好!123</h2>
  5.     <router-view/>
  6.   </div>
  7. </template>
  8. <script>
  9. export default {
  10.   name: 'App'
  11. }
  12. </script>
  13. <style>
  14. #app {
  15.   font-family: 'Avenir', Helvetica, Arial, sans-serif;
  16.   -webkit-font-smoothing: antialiased;
  17.   -moz-osx-font-smoothing: grayscale;
  18.   text-align: center;
  19.   color: #2c3e50;
  20.   margin-top: 60px;
  21. }
  22. </style>

我们简化一下内容:

  1. <template>
  2.   <div id="app">
  3.   </div>
  4. </template>
  5. <script>
  6. </script>
  7. <style>
  8. </style>

可以看到整个文档包含了三大内容,分别是<template>模板区域、<script>脚本区域和<style>样式区域,分别起到内容显示、逻辑控制、样式渲染的功能。

而在<template>模板区域中有一个div,这个div是必须有的,因为vue要求模板中所有的内容都要被一个根节点包含起来。根节点中我们就可以写需要的Html代码了。


二、绑定数据和对象

我们把上面的App.vue文件中的三大区域的数据清空,然后编写一个简单的数据绑定内容:

  1. <template>
  2.   <!-- vue的模板里面,所有的内容都需要被一个根节点包裹起来 -->
  3.   <div id="app">
  4.      <h2>{{msg}}</h2>
  5.      <br/>
  6.      这是一个根组件
  7.      <h3>姓名:{{userObj.name}}  性别:{{userObj.sex}}</h3>
  8.   </div>
  9. </template>
  10. <script>
  11. export default {
  12.   name: 'app',
  13.   data () {
  14.       return {
  15.         msg: '你好,vue',
  16.         userObj:{
  17.           name:"张三",
  18.           sex:"男"
  19.         }
  20.       }
  21.   }
  22. }
  23. </script>
  24. <style></style>

在Visual Studio Code中运行vue程序,不用再打开cmd,我们选择“终端->新终端”:
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据
这里就会帮我们在下面创建一个终端窗口,和cmd效果一样,默认为我们打开了该项目文件所在的文件夹,我们直接输入“npm run dev”指令就可以以dev模式运行项目了:
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据

运行之后的效果:
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据
在<script>区域,编写了数据逻辑:

  1. <script>
  2. export default {
  3.   name: 'app',
  4.   data () {
  5.       return {
  6.         msg: '你好,vue',
  7.         userObj:{
  8.           name:"张三",
  9.           sex:"男"
  10.         }
  11.       }
  12.   }
  13. }
  14. </script>

这里的“export default”的意思是表示把这个组件暴露出去。其中的name为这个组件的名称,这里是app(如果整个文档只有一个app组件,这个name可以不要)。
其中的“data (){}”表示业务逻辑中定义的数据,可以理解为在上面的html文档中植入的动态数据。这里我们定义了一个叫“msg”的数据,那么在上面我们使用双花括号,就可以引用在“data”中定义的msg的值信息:

<h2>{{msg}}</h2>

如果换做以前,我们是需要在<script>区域中进行dom操作的。

然后下面还可以绑定一个对象(如上面定义的userObj对象),在对象中可以定义该对象的很多属性,此时我们在上面的<template>区域就可以使用双花括号调用对象,然后就想使用普通js对象一样,用“.”点获取其对象属性:

<h3>姓名:{{userObj.name}}  性别:{{userObj.sex}}</h3>

三、循环数组和渲染数据

vue除了能进行上面的数据和对象绑定的操作,对于数组的循环和数据的渲染也有强大的功能。例如我们需要循环一个list数组,首先在data中定义该数组对象:

  1. <script>
  2. export default {
  3.   name: 'app',
  4.   data () {
  5.       return {
  6.         msg: '你好,vue',
  7.         userObj:{
  8.           name:"张三",
  9.           sex:"男"
  10.         },
  11.         list:['111','222','333']
  12.       }
  13.   }
  14. }
  15. </script>

然后在<template>区域中使用“v-for”指令进行数组的遍历

  1. <ul>
  2.    <li v-for="item in list" :key="item">
  3.       {{item}}
  4.    </li>
  5. </ul>

这里v-for指令需要使用“item in list”形式的特殊语法,其中“list”是源数据数组,而“item”则是被迭代的数组元素的别名。
而“key”的意义,是为了给Vue一个提示,以便它能跟踪每个节点的身份。使用key的主要原因是有相同父元素的子元素必须有独特的key,重复的key会造成渲染错误。
如果我们用对象,可以更明白key的作用。这里定义一个对象数组:

  1. <script>
  2. export default {
  3.   name: 'app',
  4.   data () {
  5.       return {
  6.         msg: '你好,vue',
  7.         userObj:{
  8.           name:"张三",
  9.           sex:"男"
  10.         },
  11.         list:['111','222','333'],
  12.         items: [
  13.           { id: '1', message: 'Foo' },
  14.           { id: '2', message: 'Bar' }
  15.         ]
  16.       }
  17.   }
  18. }
  19. </script>

然后遍历它:

  1. <ul>
  2.    <li v-for="item in items" :key="item.id">
  3.       {{item.id}},{{item.message}}
  4.    </li>
  5. </ul>

这里就告诉vue,使用id属性来区分每一个元素,以便它能跟踪每个节点的身份,从而可以重用和重新排序现有元素。

注意:以前的版本中,v-for可以不需要指定key,但是在Vue 2.2.0以上的版本里,当在组件中使用v-for时,key是必须的,如果不加key值,则会报Elements in iteration expect to have ‘v-bind:key’ directives”的错误。

上面两个样例的运行结果:
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据

我们还可以循环一个更加复杂的数组,该数组里面有对象成员,每个对象成员自己的结构中又有数组成员,例如下面的一个新闻分类的数据结构(items2):

  1. <script>
  2. export default {
  3.   name: 'app',
  4.   data () {
  5.       return {
  6.         msg: '你好,vue',
  7.         userObj:{
  8.           name:"张三",
  9.           sex:"男"
  10.         },
  11.         list:['111','222','333'],
  12.         items: [
  13.           { id: '1', message: 'Foo' },
  14.           { id: '2', message: 'Bar' }
  15.         ],
  16.         items2:[
  17.           {
  18.             "cate":"国内新闻",
  19.             "list":[
  20.               {id:'11',title:'国内新闻111111'},
  21.               {id:'22',title:'国内新闻222222'}
  22.             ]
  23.           },
  24.           {
  25.             "cate":"国际新闻",
  26.             "list":[
  27.               {id:'11',title:'国际新闻111111'},
  28.               {id:'22',title:'国际新闻222222'}
  29.             ]
  30.           }
  31.         ]
  32.       }
  33.   }
  34. }
  35. </script>

此时我们如何循环?在<template>区域中可以这样编写:

  1. <ul>
  2.     <li v-for="item in items2" :key="item.cate">
  3.       {{item.cate}}
  4.       <ol>
  5.         <li v-for="news in item.list" :key="news.title">
  6.           {{news.title}}
  7.         </li>
  8.       </ol>
  9.     </li>
  10. </ul>

其实大家到这里应该明白了,每个v-for的标签对,其实可以看做之前for循环的花括号体,在里面我们可以嵌套内循环体,有多少层我们就可以嵌套多少层。

最终效果:
【Vue学习总结】3.绑定数据和对象、循环数组渲染数据

以上就是Vue的基础语法,绑定数据、对象,以及如何循环数组和渲染数据的全部内容。下一篇我们继续介绍Vue如何绑定属性、Html、class、style。

发布者:小站,转转请注明出处:http://blog.gzcity.top/4713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年7月6日 15:05
下一篇 2022年7月11日 11:14

相关推荐

  • Linux命令汇总 | vim | shell | 进阶【2022版】

    Linux大全 一、Linux上下五千年 1.1 历史长河 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。 它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程…

    2022年6月24日
    27100
  • 识别并修复 Web 应用中的 XSS 漏洞

    什么是跨站点脚本? 跨站点脚本 (XSS) 是一个代码注入漏洞,当开发人员在将用户输入插入 HTML 模板之前未对用户输入进行足够好的审查时,就会在处理 HTML 的应用程序中发生该漏洞。它允许攻击者将任意 JavaScript 代码插入模板并在用户的上下文中执行它: 在上图中,开发人员未能清理“姓氏”div 的内容,这导致用户能够通过操纵其姓氏来包含恶意脚…

    2023年6月11日
    684760
  • 【Vue学习总结】1.Vue环境搭建、运行第一个项目

    我们来搭建Vue的运行环境,并构建一个官方实例工程运行。 我们登录Vue的官网https://cn.vuejs.org,可以看到Vue的起步按钮,其三个特色也在首页进行了标明: 一、搭建Vue的开发环境 在使用Vue之前,我们首先要搭建Vue的环境,我们点击上面的“起步”按钮,进步基础教程页面: 我们点击左侧树形菜单的“安装”,进入Vue的安装教程页面,一般…

    2022年7月6日
    33030
  • WebLogic中间件任意命令执行漏洞。

    一、背景简介 Weblogic是一款商用中间件应用服务器产品,可以为应用程序提供运行访问环境。 二、漏洞详情 公开日期:2022-07-29漏洞编号:暂无危害等级:高危漏洞描述:由于没有过滤危险字符,导致攻击者可以对T3/IIOP接口发送恶意内容,执行任意命令。 三、影响版本 未知 四、处置情况 1.暴露在公网的WebLogic应配置对外禁用T3和IIOP,…

    2022年8月3日
    3.2K8470
  • springboot mybatis mysql迁移到达梦、人大金仓过程数据库遇到主键自增问题

    迁移后之前MYSql 主键自增,国产数据库如果你是用mybatis做insert,可能就遇到insert不了遇到如下异常:dm.jdbc.driver.DMException: 仅当指定列列表,SET IDENTITY_INSERT为ON时,才能对自增赋值 这种情况有两种方案:1、不改代码情况: 创建个序列(自增),然后使用触发器在insert前把主键字段重…

    2023年7月24日
    2.4K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(30条)

  • Inscreva-se para receber 100 USDT
    Inscreva-se para receber 100 USDT 2024年8月11日 01:29

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you.

  • Vivod iz zapoya rostov_tcpr
    Vivod iz zapoya rostov_tcpr 2024年9月10日 13:17

    вывод из запоя в ростове [url=https://vyvod-iz-zapoya-rostov12.ru/]вывод из запоя в ростове[/url] .

  • Kapelnica ot zapoya kolomna_alSl
    Kapelnica ot zapoya kolomna_alSl 2024年9月10日 13:55

    какие капельницы от запоя [url=https://www.kapelnica-ot-zapoya-kolomna11.ru]https://www.kapelnica-ot-zapoya-kolomna11.ru[/url] .

  • snyatie lomki narkolog_cpOl
    snyatie lomki narkolog_cpOl 2024年9月10日 16:22

    снятие ломки [url=http://snyatie-lomki-narkolog11.ru]снятие ломки[/url] .

  • skoraya narkologicheskaya pomosh_mzer

    наркологическая срочная помощь [url=www.skoraya-narkologicheskaya-pomoshch11.ru]наркологическая срочная помощь[/url] .

  • Vivod iz zapoya v sankt peterbyrge_qeEi

    вывод из запоя на дому спб цены [url=https://vyvod-iz-zapoya-v-sankt-peterburge11.ru]вывод из запоя на дому спб цены[/url] .

  • skoraya narkologicheskaya pomosh_szkr

    наркологическая срочная помощь [url=www.skoraya-narkologicheskaya-pomoshch15.ru]наркологическая срочная помощь[/url] .

  • skoraya narkologicheskaya pomosh_qisn

    скорая наркологическая помощь в москве [url=http://skoraya-narkologicheskaya-pomoshch16.ru/]скорая наркологическая помощь в москве[/url] .

  • Kak zarabotat v internete_grMt
    Kak zarabotat v internete_grMt 2024年9月13日 21:12

    как зарабатывать деньги онлайн 2024 [url=www.kak-zarabotat-v-internete11.ru/]как зарабатывать деньги онлайн 2024[/url] .

  • Metalloobrabativaushie stanki_ajst
    Metalloobrabativaushie stanki_ajst 2024年9月13日 21:41

    листогибочный пресс [url=https://stanki-a.ru /]листогибочный пресс[/url] .

  • Biznes idei_uiPa
    Biznes idei_uiPa 2024年9月15日 08:54

    варианты бизнеса [url=https://biznes-idei11.ru]варианты бизнеса[/url] .

  • Porolon mebelnii_fwpt
    Porolon mebelnii_fwpt 2024年9月15日 09:34

    поролон мебельный купить москва [url=https://www.porolon-mebelnyj.ru]https://www.porolon-mebelnyj.ru[/url] .

  • rylonnie shtori s elektroprivodom_vqpl

    автоматические рулонные шторы с электроприводом [url=http://www.rulonnye-shtory-s-elektroprivodom.ru]автоматические рулонные шторы с электроприводом[/url] .

  • Elektrokarniz_tlKi
    Elektrokarniz_tlKi 2024年9月16日 03:59

    карниз автоматический [url=https://elektrokarniz2.ru]карниз автоматический[/url] .

  • Metalloobrabativaushie stanki_efst
    Metalloobrabativaushie stanki_efst 2024年9月17日 06:38

    зиговочная машина [url=http://stanki-a.ru /]зиговочная машина[/url] .

  • Biznes idei_qeOr
    Biznes idei_qeOr 2024年9月18日 15:00

    новые бизнес идеи [url=https://biznes-idei13.ru/]новые бизнес идеи[/url] .

  • Kak naiti cheloveka po nomery telefona_ocKr

    поиск по номеру телефона человека [url=poisk-po-nomery.ru]поиск по номеру телефона человека[/url] .

  • Metalloobrabativaushie stanki_wgSn
    Metalloobrabativaushie stanki_wgSn 2024年9月20日 20:35

    лазерный станок [url=http://stanki-a.ru]лазерный станок[/url] .

  • Narkologicheskii centr v Kazahstane _jtki

    Лечение от прегабалина в Алматы [url=https://narcologiya-kazakhstan.kz/]Лечение от прегабалина в Алматы [/url] .

  • Porno_mcOa
    Porno_mcOa 2024年9月25日 05:20

    порно мульт [url=http://admin4web.ru/]порно мульт[/url] .

  • instagram story viewer _orEr
    instagram story viewer _orEr 2024年9月26日 06:39

    want to view instagram [url=https://anonstoryinst.com/]want to view instagram[/url] .

  • Lychshie kapperi Rossii_qepi
    Lychshie kapperi Rossii_qepi 2024年9月29日 01:06

    лучшие капперы россии [url=https://luchshie-kappery-rossii.ru/]лучшие капперы россии[/url] .

  • Lychshie kapperi Rossii_htKa
    Lychshie kapperi Rossii_htKa 2024年9月29日 01:56

    лучшие капперы россии [url=https://www.luchshie-kappery-rossii11.ru]лучшие капперы россии[/url] .

  • maslo taif_llEn
    maslo taif_llEn 2024年9月30日 08:14

    taif vivace 5w 40 oil club [url=www.e-taif.ru]www.e-taif.ru[/url] .

  • prostitytki moskvi_fzol
    prostitytki moskvi_fzol 2024年10月1日 08:54

    шлюхи москвы [url=https://mgtimez.ru]https://mgtimez.ru[/url] .

  • polnorostovoi tyrniket_ovOr
    polnorostovoi tyrniket_ovOr 2024年10月4日 01:24

    турникет калитка механическая [url=http://for-gate.ru/]http://for-gate.ru/[/url] .

  • skyd sistema kontrolya i ypravleniya dostypom kypit_xhpn

    скуд купить [url=https://northern-computers.ru/]скуд купить[/url] .

  • lechenie alkogolizma sevastopol_wkPa
    lechenie alkogolizma sevastopol_wkPa 2024年10月5日 09:14

    лечение алкоголизма рядом [url=xn—–7kcablenaafvie2ajgchok2abjaz3cd3a1k2h.xn--p1ai]xn—–7kcablenaafvie2ajgchok2abjaz3cd3a1k2h.xn--p1ai[/url] .

  • instagram story _qnpt
    instagram story _qnpt 2024年10月6日 08:23

    download stories [url=https://anstoriesview.com/]download stories[/url] .

  • binance
    binance 2025年1月19日 08:56

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you.