Vue 基础语法(二)

一、背景:

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

二、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 事件。因此,更推荐像上面这样提供一个值为空的禁用选项。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IO流简述

IO流IO流使用场景 什么是IO流常用的IO流字节流字符流缓冲流 BIO、NIO、AIO的区别 IO流 IO流使用场景 如果操作的是纯文本文件&#xff0c;优先使用字符流如果操作的是图片、视频、音频等二进制文件。优先使用字节流如果不确定文件类型&#xff0c;优先使用字节流。字节流是万能…

Java版知识付费 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建

提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售后&#xff0c;专业技术指导&#xff0c;支持PC、APP、H5、小程序多终端同步&#xff0c;支持二次开发…

springboot整合tio-websocket方案实现简易聊天

写在最前&#xff1a; 常用的http协议是无状态的&#xff0c;且不能主动响应到客户端。最初想实现状态动态跟踪只能用轮询或者其他效率低下的方式&#xff0c;所以引入了websocket协议&#xff0c;允许服务端主动向客户端推送数据。在WebSocket API中&#xff0c;浏览器和服务…

StopWatch与ThreadLocal

目录 1、StopWatch 1、1作用&#xff1a; 1、2方法&#xff1a; 1、3使用方法 2、ThreadLocal 2、1什么是ThreadLocal 2、2简单例子 2、3使用ThreadLocal带来的四个好处 2、4主要方法 2、5ThreadLocal内存泄漏问题 1、StopWatch 1、1作用&#xff1a; 统计代码块耗时时…

vue中使用axios发送请求时,后端同一个session获取不到值

问题描述&#xff1a; 在登录页面加载完成后通过axios请求后端验证码接口&#xff08;这时后端会生成一个session用于保存验证码数值&#xff09;&#xff0c;当输入完用户名、密码、验证码后请求登录接口&#xff0c;报错验证码输入错误&#xff0c;打印后端保存验证码的sessi…

【ArcGIS Pro二次开发】(54):三调名称转用地用海名称

三调地类和用地用海地类之间有点相似但并不一致。 在做规划时&#xff0c;拿到的三调&#xff0c;都需要将三调地类转换为用地用海地类&#xff0c;然后才能做后续的工作。 一般情况下&#xff0c;三调转用地用海存在【一对一&#xff0c;多对一和一对多】3种情况。 前2种情况…

11-3_Qt 5.9 C++开发指南_QSqlQuery的使用(QSqlQuery 是能执行任意 SQL 语句的类)

文章目录 1. QSqlQuery基本用法2. QSqlQueryModel和QSqlQuery联合使用2.1 可视化UI设计框架2.1.1主窗口的可视化UI设计框架2.1.2 对话框的可视化UI设计框架 2.2 数据表显示2.3 编辑记录对话框2.4 编辑记录2.5 插入记录2.6 删除记录2.7 记录遍历2.8 程序框架及源码2.8.1 程序整体…

【RabbitMQ】Linux系统服务器安装RabbitMQ

一、下载 首先应该下载erlang&#xff0c;rabbitmq运行需要有erland环境。 官网地址&#xff1a;https://www.erlang.org/downloads 下载rabbitmq 官网环境&#xff1a;https://www.rabbitmq.com/download.html 注意&#xff1a;el7对应centos7&#xff0c;el8对应centos8…

探索运营商渠道佣金数字化运营

当前全球经济增长放缓&#xff0c;行业竞争持续加剧已是常态&#xff0c;用户需求越发苛刻、经营成本不断上升。内忧外患&#xff0c;企业经营如何突围&#xff1f;越来越多的企业发现&#xff0c;融合数字化技术的IT解决方案为企业提供了一种解决问题的可能。 数字化运营可以帮…

B. Binary Cafe(二进制的妙用)

题目&#xff1a;Problem - B - Codeforces 总结&#xff1a; 对于该题最简单的方法为使用二进制的数表示状态 例如&#xff1a; 对于一个数7的二进制&#xff1a;111 它的每一位都可表示两种状态我们可以理解为取或者不取 对于7这个数字它可以表示一种状态即在三个位置都…

道本科技||全面建立国有企业合规管理体系

为全面深化国有企业法治建设&#xff0c;不断加强合规管理&#xff0c;防控合规风险&#xff0c;保障企业稳健发展&#xff0c;近日&#xff0c;市国资委印发《常州市市属国有企业合规管理办法&#xff08;试行&#xff09;》&#xff08;以下简称《办法》&#xff09;&#xf…

小研究 - JVM GC 对 IMS HSS 延迟分析(二)

用户归属服务器&#xff08;IMS HSS&#xff09;是下一代通信网&#xff08;NGN&#xff09;核心网络 IP 多媒体子系统&#xff08;IMS&#xff09;中的主要用户数据库。IMS HSS 中存储用户的配置文件&#xff0c;可执行用户的身份验证和授权&#xff0c;并提供对呼叫控制服务器…

【Matlab】判断点和多面体位置关系的两种方法实现

我的主页&#xff1a; 技术邻&#xff1a;小铭的ABAQUS学习的技术邻主页博客园 : HF_SO4的主页哔哩哔哩&#xff1a;小铭的ABAQUS学习的个人空间csdn&#xff1a;qgm1702 博客园文章链接&#xff1a; https://www.cnblogs.com/aksoam/p/17590039.html 分别是向量判别法&…

Azure pipeline自动化打包发布

pipeline自动化&#xff0c;提交代码后&#xff0c;就自动打包&#xff0c;打包成功后自动发布 第一步 pipeline提交代码后&#xff0c;自动打包。 1 在Repos,分支里选择要触发的分支&#xff0c;这里选择cn_china,对该分支设置分支策略 2 在生产验证中增加新的策略 3 在分支安…

【单机多卡】torch改造代码为DDP单机多卡分布式并行

torch分布式数据并行DDPtorch.nn.parallel.DistributedDataParallel代码修改记录。&#xff08;要求pytorch_version>1.0&#xff09; 目录 1.&#x1f344;&#x1f344;要修改的地方概览 2.✏️✏️初始化 3.✏️✏️设置当前进程GPU 4.✏️✏️设置sampler 5.✏️✏…

后端技术趋势指南|如何选择自己的技术方向

编程多条路&#xff0c;条条通罗马 后台大佬 后台路线都是面对后台服务器业务&#xff0c;比如web后台服务器&#xff0c;视频后台服务器&#xff0c;搜索后台服务器&#xff0c;游戏后台服务器&#xff0c;直播后台服务器&#xff0c;社交IM后台服务器等等&#xff0c;大部分…

Python基础入门教程(下)

目录 七、函数进阶 7.1、函数多返回值 7.2、函数多种传参方式 位置参数 关键字参数 缺省参数 不定长参数 位置传递 关键字传递 7.3、匿名函数 函数作为参数传递 lambda匿名函数 八、文件操作 8.1、文件的读取 open()打开函数 mode常用的三种基础访问模式 读操…

无人机调试笔记——常见参数

无人机的PID调试以及速度相关参数 1、Multicopter Position Control主要是用来设置无人机的各种速度和位置参数。调试顺序是先调试内环PID&#xff0c;也就是无人机的速度闭环控制&#xff0c;确认没有问题后再进行外环位置控制&#xff0c;也就是定点模式控制。 2、调试的时…

【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 【C】【C】做一个飞机空战小游戏(三)——模块化程设设计 最近想用c做一个小游戏&#x…

ClickHouse的安装启动

安装步骤 1.关闭防火墙 2.修改资源限制配置文件 2.1 路径&#xff1a;/etc/security/limits.conf 在末尾添加&#xff1a; * soft nofile 65536 #任何用户可以打开的最大的文件描述符数量&#xff0c;默认1024 这里的设置会限制tcp连接数 * hard nofile 65536 * soft nproc…