文章目录

  • 一、指令
    •   1、v-bind指令
    •   2、v-on指令
    •   3、v-model指令

一、指令

  1、v-bind指令

v-bind指令是用来更新HTML元素的属性,其语法糖写法为用 : 代替v-bind

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Vue案例--南一小宝宝啊</title><style>.active {color: #ff0000;}</style>
</head>
<body>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app"><p>{{msg}}</p><!--  传统写法--><img v-bing:src="url"></img><a v-bind:href="url"></a><!--  语法糖:简写--><img :src="url"></img><a :href="url">百度一下</a><!--  添加class属性,类名后面的boolen为true则赋予class--><!--  对象语法<h2 :class="{类名1:true,类名2:false}"></h2>--><h2 :class="{active:isActive,line:isLine}">{{msg}}</h2><button @click="btnClick">BUTTON</button><h2 :class="getClass()"></h2><!--  数组语法--><h2 :class="[active,line]">{{msg}}</h2>
</div>
<script>const app = new Vue({el: '#app',data: {msg: 'hello!',url: 'hhhh',isActive: false,isLine: false,active: 'hh',line: 'dd'},methods: {btnClick: function () {alert("hhh")this.isActive = !this.isActive},getClass: function () {return {active: this.isActive, line: this.isLine}},get: function () {return [this.active, this.line]}}})
</script></body>
</html>

  (1):v-bind动态绑定style-对象语法

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Vue案例--南一小宝宝啊</title><style>.active {color: red;}</style>
</head>
<body>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app"><!--  <p :style="{key(属性名字):value(属性值)}">{{msg}}</p>--><!--  <p :style="{fontSize:'50px'}">{{msg}}</p>--><p :style="{fontSize:finalSize,color:finalColor}">{{msg}}</p><p :style="getStyle()">{{msg}}</p>
</div>
</div>
<script>const app = new Vue({el: '#app',data: {msg: 'hello!',finalSize: '100px',finalColor: 'red'},methods: {btnClick: function () {alert("hhh")this.isActive = !this.isActive},getClass: function () {return {active: this.isActive, line: this.isLine}},get: function () {return [this.active, this.line]},getStyle: function () {return {fontSize: this.finalSize, color: this.finalColor}}}})
</script></body>
</html>

  (2)v-bind动态绑定style-数组语法

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Vue案例--南一小宝宝啊</title><style>.active {color: red;}</style>
</head>
<body>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app"><p :style="[baseStyle,baseStyle]">{{msg}}</p><p :style="getStyle()">{{msg}}</p>
</div>
</div>
<script>const app = new Vue({el: '#app',data: {msg: 'hello!',baseStyle: {backgroundColor: 'red'},baseStyle: {fontSize: '100px'}},methods: {getStyle: function () {return [[this.baseStyle, this.baseStyle]]}}})
</script></body>
</html>

  2、v-on指令

v-on指令是用于监听DMO事件,并在触发的时候运行一些JavaScript代码
  (1)v-on基本使用及语法糖

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Vue案例--南一小宝宝啊</title>
</head>
<body>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app"><button v-on:click="increment">+</button><span>{{counter}}</span><button v-on:click="decrement">-</button><!--  语法糖--><button @click="increment">+</button><span>{{counter}}</span><button @click="decrement">-</button>
</div>
<script>const app = new Vue({el: '#app',data: {counter: 1},methods: {increment() {if (this.counter >= 0) {this.counter++}},decrement() {if (this.counter > 0) {this.counter--}}}})
</script>
</body>
</html>

  (2)v-on的参数问题

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><title>Vue案例--南一小宝宝啊</title>
</head>
<body>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app"><!--  1.事件调用方法没有参数--><button @click="int()">按钮一</button><button @click="int">按钮二</button><!--  在事件定义时候,写函数时候正常传参数--><button @click="out(123)">按钮三</button><!--  需要参数,带()了,但是没传会把undefined输出--><button @click="out()">按钮四</button><!--  页面上的每一个操作,Vue都会自动生成一个event事件对象--><!--  2.在事件定义时候,写函数时候省略了小括号,但是方法本身是需要一个参数的,这时候Vue会默认将浏览器生产的event事件对象作为参数传入到方法中--><button @click="out">按钮五</button><!--  只需要一个event对象--><button @click="xuY">按钮六</button><!--  3.方法定义时,我们需要event对象,同时又需要其他参数此时需要写成$event--><button @click="xuYao('哈哈哈',$event)">按钮七</button>
</div>
<!--
情况一 :如果该方法不需要额外参数,那么方法后的()可以不添加。I
但是注意:如果方法本身中有一个参数,那么会默认将原生事件event参数undefined传递进去.
情况二:如果需要同时传入某个参数,同时需要event时,可以通过$event传入事件。
-->
<script>const app = new Vue({el: '#app',methods: {int() {alert('被调用了')},out(abc) {alert(abc + '被调用了')},xuY(event) {alert(event + '被调用了')},xuYao(abc, event) {alert(abc + '被调用了----' + event)}}})
</script>
</body>
</html>

  (3)v-on的修饰符

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><title>Title</title>
</head>
<body>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app"><!-- 1: .stop修饰符  阻止事件间的冒泡传递--><div @click="fu"><button @click.stop="zi">按钮1</button></div><!-- 2: .prevent修饰符  阻止默认事件--><form action="baiDu"><!-- 没用.prevent,点击提交按钮会自动提交有了.prevent,点击提交后会执行@click绑定的事件后再提交--><input type="submit" value="提交" @click.prevent="submitClick"></form><!--  3:监听某个键盘按键的点击--><input type="text" @keyup.enter="keyUp"><!--  4:.once修饰符,只允许执行一次--><button @click.once="but">按钮2</button>
</div>
<script>const app = new Vue({el: '#app',methods: {fu() {alert("父亲")},zi() {alert("儿子事件冒泡传递给")},submitClick() {alert("确认提交吗?")},keyUp() {alert('hhh')},but() {alert('点击')}}})
</script>
</body>
</html>

  3、v-model指令

  (1)v-model的双向绑定

<!DOCTYPE HTML>
<html lang="zn"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue 测试实例 - 南一小宝宝啊</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><body>
<div id="app"><!--  1.v-model实现双向绑定--><input type="text" v-model="msg"><!--  2.手动实现双向绑定--><input type="text" :value="msg" @input="change"><input type="text" :value="msg" @input="msg=$event.target.value"><br><!--3.也可以是多行文本域--><textarea v-model="msg"></textarea><p>{{msg}}</p>
</div>
<script>var app = new Vue({el: '#app',data: {msg: "music"}})
</script>
</body>
</html>

  (2)v-model的修饰符
   lazy修饰符:
    1.默认情况下, v-model默认是在input事件中同步输入框的数据的。
    2.也就是说,一旦有数据发生改变对应的data中的数据就会自动发生
改变。
    3.lazy修饰符可以让数据在失去焦点或者回车时才会更新

   number修饰符:

    1-默认情况下,在输入框中无论我们输入的是字母还是数字,都会被
当做字符串类型进行处理。
    2-但是如果我们希望处理的是数字类型,那么最好直接将内容当做数
字处理。
    3-number修饰符可以让在输入框中输入的内容自动转成数字类型

   trim修饰符:

    1-如果输入的内容首尾有很多空格,通常我们希望将其去除
    2-trim修饰符可以过滤内容左右两边的空格

<!DOCTYPE HTML>
<html lang="zn"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue 测试实例 - 南一小宝宝啊</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><body>
<div id="app"><!--  1.lazy--><input type="text" v-model.lazy="msg"><p>{{msg}}</p><!--  2.number--><input type="text" v-model.number="age"><p>{{typeof age}}</p><!--3.trim--><input type="text" v-model.trim="msg"><p>{{msg}}</p>
</div>
<script>var app = new Vue({el: '#app',data: {msg: "music",age: 18},})
</script>
</body>
</html>

  (3)v-model结合radio单选框的使用

<!DOCTYPE HTML>
<html lang="zn"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue 测试实例 - 南一小宝宝啊</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><body>
<div id="app"><input type="radio" id="male" value="男" v-model="sex">男<input type="radio" id="female" value="女" v-model="sex">女<p>{{sex}}</p>
</div>
<script>var app = new Vue({el: '#app',data: {msg: "music",sex: '男'},methods: {change(event) {this.msg = event.target.value}}})
</script>
</body>
</html>

  (4)v-model结合checkbox多选框

<!DOCTYPE HTML>
<html lang="zn"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue 测试实例 - 南一小宝宝啊</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><body>
<div id="app"><!--  checkbox单选框--><label for="agree"><input type="checkbox" id="agree" v-model="isAgree">同意协议</label><p>您选择的是{{isAgree}}</p><!--  只有选择了,才能进行下一步--><button :disabled="!isAgree">下一步</button><p>---------------------------------------</p><!--  2.多选框--><input type="checkbox" value="篮球" v-model="hobbies">篮球<input type="checkbox" value="足球" v-model="hobbies">足球<input type="checkbox" value="街舞" v-model="hobbies">街舞<p>您的爱好是{{hobbies}}</p><!--  3.input的值绑定,其实就是v-bind--><!--我们前面的value中的值,可以回头去看-下,都是在定义input的时候直接给定的。但是真实开发中,这些input的值可能是从网络获取或定义在data中的。所以我们可以通过v-bind:value动态的给value绑定值。--><label v-for="item in originHobbies" :for="item"><input type="checkbox" :value="item" :id="item" v-model="hobbies">{{item}}</label><p>您的爱好是{{hobbies}}</p>
</div>
<script>var app = new Vue({el: '#app',data: {msg: "music",isAgree: false,hobbies: [],originHobbies: ['篮球', '足球', '街舞']},methods: {change(event) {this.msg = event.target.value}}})
</script>
</body>
</html>

  (5)v-model结合select

<!DOCTYPE HTML>
<html lang="zn"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue 测试实例 - 南一小宝宝啊</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><body>
<div id="app"><!--  1.select单选--><select name="abc" id="" v-model="fruit"><option value="苹果">苹果</option><option value="香蕉">香蕉</option><option value="草莓">草莓</option></select><p>您选择的是-{{fruit}}</p><!--  只有选择了,才能进行下一步--><button :disabled="!isAgree">下一步</button><p>---------------------------------------</p><!--  2.select多选,选择时候需要按Ctrl--><select name="abc" v-model="fruits" multiple><option value="苹果">苹果</option><option value="香蕉">香蕉</option><option value="草莓">草莓</option></select><p>您的爱好是{{fruits}}</p>
</div>
<script>var app = new Vue({el: '#app',data: {fruit: '苹果',fruits: []},})
</script>
</body>
</html>

Vue.js----入门 (3)----v-bind、v-on、v-model等指令以及其语法糖的用法相关推荐

  1. Vue.js入门教程(适合初学者)

    Vue.js入门教程 Vue官网网址:Vue.js 中文网 Vue.js Vue.js是渐进式JavaScript 框架,是一套构建用户界面的渐进式框架.也可以说Vue.js 是一个用来构建网页界面的 ...

  2. js模板字符串自定义类名_【Vue.js 入门到实战教程】07Vue 组件注册 | 基本使用和组件嵌套...

    来源 | https://xueyuanjun.com/post/21929除了前面介绍的基本语法之外,Vue.js 还支持通过组件构建复杂的功能模块,组件可以称得上是 Vue.js 的灵魂,是 Vu ...

  3. vue设置cookie的domain无效_【Vue.js入门到实战教程】16Tailwind 与 Bootstrap 的区别和使用入门...

    来源 | https://xueyuanjun.com/post/22065我们知道,从 Laravel 8 开始,自带前端脚手架代码默认兼容 Tailwind CSS 框架,取代了之前的 Boots ...

  4. Vue.js入门教程-组件注册

    一.组件创建 1.1 创建步骤 创建Vue的组件都有三个基本步骤是 [①创建组件构造器.②注册组件和③使用组件]. 1.2 基本示例 比如,我们创建一个Button组件. // 1. 创建一个组件构造 ...

  5. html中事件监听的使用,Vue.JS入门篇--事件监听

    你可以使用 v-on 指令来绑定并监听 DOM 事件.绑定的内容可以是一个当前实例上的方法 (后面无需跟括号) 或一个内联表达式.如果提供的是一个方法,则原生的 DOM event 会被作为第一个参数 ...

  6. Vue.js 入门教程

    Vue.js 教程 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 A ...

  7. 一个Java程序猿眼中的前后端分离以及Vue.js入门

    原文:https://mp.weixin.qq.com/s/HWRYAR16vLE1XFep6_i1tA 松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的, ...

  8. Vue.js 入门指南之“前传”(含sublime text 3 配置)

    题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的"入门",就算是"入门指南&quo ...

  9. vue.js 入门,简介

    vue的源代码下载--开发版本和生产版本 https://cn.vuejs.org/js/vue.js https://cn.vuejs.org/js/vue.min.js vue中文学习官网 htt ...

最新文章

  1. java gui 案例_JavaGui入门—布局的嵌套使用附实例
  2. Udacity机器人软件工程师课程笔记(三十二) - 卡尔曼滤波器 - 一维卡尔曼滤波器 - 多维卡尔曼滤波器 - 拓展卡尔曼滤波器(EKF)
  3. 【极光推送】给指定用户发送消息
  4. Linux基础 —— 操作系统简介
  5. 你没有看错,爬网页数据,C# 也可以像 Jquery 那样
  6. 数据科学家需要掌握的10项统计技术,快来测一测吧
  7. 为SQL Server Always On可用性组配置托管服务帐户
  8. Bootstrap学习(一):Bootstrap简介
  9. (6)通过输入参数(测量数据)构建三维体模型
  10. unknow host service.gradle.org, proxy settings in gradle
  11. 【 Educational Codeforces Round 51 (Rated for Div. 2) F】The Shortest Statement
  12. 计算机网络数据通信基础题,数据通信基础练习题(含答案)
  13. Unity 导入高分辨率图片
  14. 计算机毕业设计jspm平面设计类众包威客网网站mjmBBmysql程序
  15. Apollo详解之canbus模块——车辆底层协议调试
  16. 如何禁止拼音加加自动修改IE首页
  17. 计算机内存不足 无法使用,电脑内存不足怎么办,教您解决电脑内存不足
  18. php实现秒数倒计时,jQuery网页倒计时代码 显示天、小时、分钟与秒数
  19. 18个无版权(免费可商用)图片网站
  20. 阿拉伯字母及阿拉伯文排版规则

热门文章

  1. Ubuntu查看cuda版本
  2. AutoWare 代码解析
  3. Python提取中文关键词和摘要
  4. 论产品设计师的自我修养
  5. matlab求函数极值教程,MATLAB程序设计教程(7)—MATLAB解方程与函数极值
  6. 什么是多态(polymorphism)
  7. UEFI启动是什么意思 UEFI启动对比Bios启动优势在哪里
  8. 炫“酷”行动-人大金仓有奖征文--金仓分析型数据库迁移IBM Netezza一体机技术可行性
  9. 20100918_Dawning_图片平铺
  10. 计算机字体之父,“中文电脑之父”朱邦复