Vue 基础语法(二)

news2024/10/6 2:23:53

一、背景:

        我们对于基础语法,说白了就是实现元素赋值循环判断,以及事件响应即可!

二、v-bind

        我们已经成功创建了第一个 Vue 应用!看起来这跟渲染一个字符串模板非常类似,但是 Vue 在背后做了大量工作。现在数据和 DOM 已经被建立了关联,所有东西都是响应式的。我们在控制台操作对象属性,界面可以实时更新!

        我们还可以使用 v-bind 来绑定元素特性。

<div id="app">
  <!--
        如果要将模型数据绑定在 html 属性中
        则使用 v-bind 指令,此时 title 中显示的是模型数据
  -->
  <h1 v-bind:title="message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</h1>
  <!-- v-bind 指令的简写形式: 冒号(:) -->
  <h1 :title="message">我是标题</h1>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
</script>
<script>
  new Vue({
    el: '#app',
    data: {
      message: '页面加载于 ' + new Date().toLocaleString()
    }
  })
</script>

        你看到的 v-bind 特性被称为指令。指令带有前缀 v- ,以表示它们是 Vue 提供的特殊特性。

        除了使用插值表达式 {{}} 进行数据渲染,也可以使用 v-bind 指令,它的简写的形式就是一个冒号(:

三、v-if 系列

        什么是条件判断语句,就不需要我说明了吧( ̄▽ ̄),以下两个属性

v-if

v-else-if

v-else

        测试:观察在控制台输入 vm.type = false 的变化 

<body>
    <div id="app2">
      <span v-if="type">TRUE</span>
      <span v-else>NO</span>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
    </script>
    <script>
      var vm2 = new Vue({
        el: "#app2",
        data: {
          type: true
        }
      })
    </script>
</body>

        测试:观察在控制台输入 vm.type = 'B'、'C'、'D'  的变化。 

<body>
    <div id="app">
      <!--
         === 三个等号在 JS 中表示绝对等于(就是数据与类型都要相等)
      -->
      <h1 v-if="type === 'A'">A</h1>
      <h1 v-else-if="type === 'B'">B</h1>
      <h1 v-else-if="type === 'C'">C</h1>
      <h1 v-else>who</h1>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
    </script>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          type: 'A'
        }
      })
    </script>
</body>

四、v-for 

        语法格式如下:

<div id="vue">
    <li v-for="item in items">
        {{ item.message }}
    </li>
</div>

        需要注意的是:items 是数组,item 是数组元素迭代的别名。Thymeleaf 模板引擎的语法和这个十分的相似!

        在控制台输入 vm.items.push({code:'789',message: 'C'}) ,尝试追加一条数据,你会发现浏览器中显示的内容会增加一条内容。

<body>
  <div id="app">
    <li v-for="item in items">
      {{item.message}}
    </li>

  </div>
  <div id="app2">
    <li v-for="(item,index) in items">
      我的序号是:{{index}},信息是:{{item.message}}
    </li>

  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
  <script>
    var vm = new Vue({
      el: "#app",
      data: {
        items:[
          {code:'123',message:'A'},
          {code:'456',message:'B'},
        ]
      }
    })
    var vm2 = new Vue({
      el: "#app2",
      data: {
        items:[
          {code:'123',message:'A'},
          {code:'456',message:'B'},
        ]
      }
    })

  </script>
</body>

五、v-on

        v-on 标签的作用是监听事件,它包括 Vue 中的事件和前端页面本身的一些事件!我们这里 clickvue 的事件,还可以绑定到 Vue 中的 methods 中的方法事件。

<body>
  <div id="app">
    <!--
        在这里我们使用了 v-on 绑定了 click 事件
        并指定了名为 sayHi 的方法
    -->
    <button v-on:click="sayHi">点我</button>
    <!-- v-on 指令的简写形式 @ -->
    <button @click="sayHi">点我</button>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
  </script>
  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        message: 'Hello World'
      },
      // 方法必须定义在 Vue 实例的 methods 对象中
      methods: {
        sayHi: function (event) {
          // `this` 在方法里指向当前 Vue 实例
          alert(this.message);
        }
      }
    });
  </script>
</body>

六、v-model

        v-model 是双向数据绑定标签,Vue.js 是一个 MVVM 框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。这也算是 Vue.js 的精髓之处了。

        值得注意的是,我们所说的数据双向绑定,一定是对于 UI 控件来说的,非 UI 控件不会涉及到数据双向绑定。对于我们处理表单,Vue.js 的双向数据绑定用起来就特别舒服了。

        你可以用 v-model 指令在表单 < input>< textarea> < select> 元元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

6.1 文本框

<body>
  <div id="app">
    <!-- v-bind:value只能进行单向的数据渲染 -->
    <input type="text" v-bind:value="searchMap.keyWord">

    <!-- v-model 可以进行双向的数据绑定 -->
    <input type="text" v-model="searchMap.keyWord">

    <p>您要查询的是:{{searchMap.keyWord}}</p>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
  </script>
  <script>
    new Vue({
      el: '#app',
      data: {
        searchMap:{
          keyWord: 'xiehongfa'
        }
      }
    })
  </script>
</body>

6.2 单复选框

<body>
  <div id="app">
    单复选框:
    <input type="checkbox" id="checkbox" v-model="checked">
    &nbsp;&nbsp;
    <label for="checkbox">{{ checked }}</label>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
  </script>
  <script>
    new Vue({
      el: '#app',
      data: {
        checked: false
      }
    })
  </script>
</body>

6.3 多复选框

<body>
  <div id="app4" >
    <input type="checkbox" value="打篮球" v-model="interest">打篮球
    <input type="checkbox" value="踢足球" v-model="interest">打篮球
    <input type="checkbox" value="唱" v-model="interest">唱
    <input type="checkbox" value="跳" v-model="interest">跳
  
    </br>
    你的兴趣爱好为:{{interest}}
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
  <script>
    var vm4 = new Vue({
      el: "#app4",
      data: {
        interest:["唱"]
      }
    })
  </script>
</body>

6.4 单选按钮

<body>
  <div id="app3">
    <input type="radio" value="男" v-model="name">男
    <input type="radio" value="女" v-model="name">女
    你的选择为:{{name}}
  </div>
 
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
  <script>
    var vm3 = new Vue({
      el: "#app3",
      data: {
        name:""
      }
    });
  </script>
</body>

6.5 下拉框

<body>
  <div id="app5">
    <span>爱好</span>
    <select v-model="interest">
      <option value="" disabled>请选择</option>
      <option>打篮球</option>
      <option>踢足球</option>
      <option>乒乓球</option>
    </select>
    你的兴趣爱好为:{{interest}}
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
  </script>
  <script>
    var vm5 = new Vue({
      el: "#app5",
      data: {
        interest:""
      }
    })
  </script>
</body>

        注意:如果 v-model 表达式的初始值未能匹配任何选项,< select> 元素将被渲染为 “未选中” 状态。在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。因此,更推荐像上面这样提供一个值为空的禁用选项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/816592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试/负载测试/压力测试之间的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …

全网最细,性能测试-接口压测 Locust固件实战,从0到1进阶...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 python如何进行性…

基于YOLOv5的S弯识别

基于YOLOv5的S弯识别 目录 基于YOLOv5的S弯识别技术背景算法介绍具体实现1、下载仓库2、配置环境3、数据处理4、转成engine文件5、使用代码实现识别 技术总结 技术背景 S弯识别是一个在自动驾驶和机器人领域中很常见的任务&#xff0c;它需要识别道路上的弯道&#xff0c;特别…

springboot+mybatis-flex初体验

mybatis作为一款应用非常广泛的持久层框架&#xff0c;随之又出现了mybatis的增强框架。mybatis的增强框架就是在mybatis 的基础上又添加了许多的功能&#xff0c;目的就是为简化开发&#xff0c;提供效率而生。mybatis-plus就是一款很流行的增加框架&#xff0c;在 mybatis-pl…

小程序学习(四):WXML模板语法

WXML模板语法-数据绑定 1.数据绑定的基本原则 ①在data中定义数据 ②在WXML中使用数据 2.动态绑定属性 WXML模板语法-事件绑定 3.什么是事件 4.小程序中常用的事件 5.事件对象的属性列表 6.target和currentTarget的区别 7.bindtap的语法格式 8.在事件处理函数中为data中的数据…

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(六)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …

校园跑腿小程序功能分享

提起校园跑腿小程序大家都不陌生&#xff0c;尤其是对上大学的伙伴们来说,更是熟悉得不能再熟悉了&#xff0c;和我们的生活息息相关&#xff0c;密不可分。 对于现在的年轻人来说&#xff0c;网购是非常简单和方便的一种购物方式&#xff0c;随之快递也会越来越多。在我们国家…

rancher2使用helm部署harbor,搭建私有镜像/helm仓库

接上一篇《rancher2安装nfs-subdir-external-provisioner为PVC/PV动态提供存储空间&#xff08;动态分配卷&#xff09;》 本篇开始讲如何在rancher2中部署harbor&#xff0c;来搭建一个私有的镜像/helm仓库。 一、安装harbor服务 1. 在目标集群中添加命名空间 2. 将提供harb…

Elbie勒索病毒的最新威胁:如何恢复您的数据?

导言&#xff1a; 在数字时代的浩瀚网络中&#xff0c;隐藏着一支不为人知的黑暗势力&#xff0c;他们的代表之一就是臭名昭著的Elbie勒索病毒。这个神秘的数字幽灵似乎无所不能&#xff0c;几乎每个人都可能成为它的牺牲品。本文91数据恢复将揭示Elbie勒索病毒的背后故事&…

数据结构-链表结构-单向链表

链表结构 说到链表结构就不得不提起数据结构&#xff0c;什么是数据结构&#xff1f;就是用来组织和存储数据的某种结构。那么到底是某种结构呢&#xff1f; 数据结构分为&#xff1a; 线性结构 数组&#xff0c;链表&#xff0c;栈&#xff0c;队列 树形结构 二叉树&#x…

零基础玩转C语言—结构体【初阶】

大家好&#xff0c;我是深鱼~ 目录 【前言】&#xff1a; 一、结构体的声明 1.1结构的基本知识 1.2结构的声明 1.3结构体成员的类型 1.4结构体变量的定义和初始化 二、结构体成员的访问 【前言】&#xff1a;本章来介绍结构体的部分知识&#xff0c;并不会深入讲解&…

webstorm格式化代码后单引号转成了双引号

webStorm格式化js代码时单引号变成了双引号&#xff0c;问题如下&#xff1a; 格式化前&#xff1a; 格式化后&#xff1a; 解决办法&#xff1a; window: File -> Settings -> Editor -> Code Style -> Javascript&#xff1b; mac: webStorm -> Preference …

了解回归测试吗?今天给大家详解一下回归测试

测试工作中&#xff0c;新人对于测试流程、测试方法都有可以直接拿来用的教材&#xff0c;但是对于回归测试中的bug处理的细节&#xff0c;往往需要我们更多的经历才能更好的完成自己的工作&#xff0c;下面我们来谈一谈回归测试bug的处理中需要关注的点&#xff1a; 一、什么…

Docker 镜像解密:分层存储与镜像构建原理

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

国内办公协作系统评测:5 款软件推荐

办公协作系统是现代信息化办公的必备工具之一&#xff0c;对于企业来说&#xff0c;选择一款好用的办公协作系统非常重要。然而&#xff0c;在众多的办公协作系统中&#xff0c;哪个好用是一个让人头痛的问题。总体而言&#xff0c;国内的办公协作系统已经相当成熟和完善&#…

基于linux下的高并发服务器开发(第四章)- 多线程实现并发服务器

>>了解文件描述符 文件描述符分为两类&#xff0c;一类是用于监听的&#xff0c;一类是用于通信的&#xff0c;在服务器端既有监听的&#xff0c;又有通信的。而且在服务器端只有一个用于监听的文件描述符&#xff0c;用于通信的文件描述符是有n个。和多少个客户端建立了…

vue 前端一键导出excel文件并附带表格样式

1、安装xlsx、xlsx-style、file-saver三个包 //xlsx与file-saver指定版本安装&#xff0c;解决默认安装utils未定义的问题 npm install --save xlsx0.17.0 npm install --save file-saver2.0.5 npm install xlsx-style --save 2、在使用的页面引入 import XLSX from xlsx //…

对顶堆算法

对顶堆可以动态维护一个序列上的第k大的数&#xff0c;由一个大根堆和一个小根堆组成&#xff0c; 小根堆维护前k大的数(包含第k个)大根堆维护比第k个数小的数 [CSP-J2020] 直播获奖 题目描述 NOI2130 即将举行。为了增加观赏性&#xff0c;CCF 决定逐一评出每个选手的成绩&a…

【暑期每日一练】 day10

目录 选择题 &#xff08;1&#xff09; 解析&#xff1a; &#xff08;2&#xff09; 解析&#xff1a; &#xff08;3&#xff09; 解析&#xff1a; &#xff08;4&#xff09; 解析&#xff1a; &#xff08;5&#xff09; 解析&#xff1a; 编程题 题一 …

Klipper seria.c 文件代码分析

一. 前言 Klipper 底层硬件的串口模块程序写的是否正确是决定下位机与上位机能否正常通信的前提&#xff0c;如果这个文件的驱动没写好&#xff0c;那上位机控制下位机就无从谈起&#xff0c;更无法通过上位机去验证下位机程序的正确性。 本篇博文将详细解析 Klipper src 文件夹…