Vue学习之常用指令实例详解


Posted in Javascript onJanuary 06, 2020

本文实例讲述了Vue常用指令。分享给大家供大家参考,具体如下:

1、创建一个vue实例

vue的一个特点就是数据驱动界面,一旦对js中的数据进行修改,界面中用到数据的地方也会立马做出更改。为了对界面进行操纵,需要先获取到界面的标签元素,并实例化一个vue实例。

例如在HTML创建一个div:

<div id="app">
  <p>{{msg}}</p>
</div>

在js中将其实例化为vue对象:

let app=new Vue({
    el:'#app',//标签的类名、id,用于获取元素
    //以键值对的形式存放用到的数据成员
    data:{
      msg:'显示的内容'
    },
    //包含要用到的函数方法
    methods:{
    }
  });

这样js中msg的内容就会在p标签内显示出来。

2、vue常用指令

1、 v-model:将组件与变量进行双向绑定,当组件数据修改时,变量会随之改变。它后面可加修饰符,例如.lazy,只有在标签中的值发生改变时才同步到变量,.trim过滤用户输入中的空格。

2、v-once:不允许修改数据,例如HTML中有如下三个标签:

<div id="app">
    <p v-once>{{msg}}</p>
    <p>{{msg}}</p>
    <input type="text" v-model="msg">
  </div>

在input框内输入内容后,会传到msg变量中,第二个p标签内显示的信息会随着msg发生变化,而第一个带有v-once的p标签则只会显示msg的初始值,不会随之变化。

3、v-if="表达式",根据表达式的结果来判断,是true则渲染元素,false则将元素注释掉

4、v-show与v-if类似,true就渲染,但是false并不是注释掉,而是通过display:none;来将元素隐藏,如果需要来回切换,使用v-show更好。例如:  

<p v-if="show">显示内容</p>
<p v-if="hide">注释内容</p>
<p v-show="hide">v-show隐藏</p>

令show:true,hide:false,结果如下:

Vue学习之常用指令实例详解

5、v-else、v-else-if与v-if连在一起使用构成逻辑判断,根据返回值决定是否显示,不可以单独或者分开使用,例如:

<p>请输入分值:</p>
<input type="text" v-model="score">
<p v-if="score>90">优秀</p>
<p v-else-if="score>80">良好</p>
<p v-else-if="score>60">中等</p>
<p v-else>不及格</p>

测试结果为:

Vue学习之常用指令实例详解

6、v-for用于遍历元素,使用格式为v-for="(值,键) in 遍历内容",其遍历的内容可以是数组、对象、字符串,例如在js的data中有一个person对象,person:{name:'tony',age:15,sex:'男'},将其内容在页面遍历输出: 

<p v-for="(value,key) in person">
  {{key+':'+value}}
</p>

生成结果如下:

Vue学习之常用指令实例详解

7、v-text:向标签内注入数据,并且覆盖标签内的其他内容

8、v-html:向标签内覆盖注入HTML内容作为其子元素。例如:

<div v-html="vhtml">标签内原来内容</div>

结果插入一个子div并将覆盖原内容:

Vue学习之常用指令实例详解

9、v-bind:给标签绑定属性、类、样式等,可以缩写为冒号,例如:    

<!-- 完整语法 -->
<a v-bind:href="url" rel="external nofollow" rel="external nofollow" >...</a>
<!-- 缩写 -->
<a :href="url" rel="external nofollow" rel="external nofollow" >...</a>

由于vue的界面元素都是由数据驱动的,js代码从服务器获得的属性、样式等数据需要通过绑定加到HTML界面元素上,通过绑定可以更为灵活地选择要添加属性的元素。Vue并不是直接操纵元素的class,而是通过绑定一个数据到class上,然后通过数据驱动class的有无,从而改变页面的显示,这充分显示了vue数据驱动的特点。

例如给上面person对象中key为'name'的那一行信息绑定一个active类使其高亮显示:

<!--通过v-for循环遍历person数组,绑定class,如果键值为name,绑定的class='active'-->
<p v-for="(value,key) in person" :class="key==='name' ? 'active' : ''">
  {{key+':'+value}}
</p>

结果:

Vue学习之常用指令实例详解

也可以使用如下方法来绑定一个类名,页面会根据变量isActive与hasError的true或false来确定是否绑定active与text-danger类,甚至可以将active设为计算属性,运算后返回true/false。

注意:绑定的属性可以用驼峰命名法或使用短横线来连接,但使用短横线要用引号引起来

<div class="static"
   v-bind:class="{ active: isActive, 'text-danger': hasError }">
</div>

10、v-on:给标签绑定函数,可以缩写为@,例如绑定一个点击函数

<p>{{msg}}</p>
<button @click="changeContent()">change</button>

在Vue的methods中实现changeContent函数:

let app=new Vue({
    el:'#app',
    data:{
      msg:'第一次输入信息',
    },
    methods:{
      changeContent(){
        this.msg="修改后的输入信息";
      }
    }
  });

原页面与点击后:

Vue学习之常用指令实例详解Vue学习之常用指令实例详解

Vue.js 为 v-on 提供了事件修饰符。修饰符是由.开头的指令后缀来表示的,用于对事件进行约束。例如:

<!-- 阻止单击事件继续传播 --> 
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 --> 
<form v-on:submit.prevent="onSubmit"></form> 
<!-- 修饰符可以串联使用,并且使用的顺序很重要 --> 
<a v-on:click.stop.prevent="doThat"></a> 
<!-- 添加事件监听器时使用事件捕获模式 --> 
<!-- 即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理 --> 
<div v-on:click.capture="doThis">...</div> 
<!-- 只当在 event.target 是当前元素自身时才触发函数 --> 
<!-- 即事件不从内部元素触发 --> 
<div v-on:click.self="doThat">...</div>
<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>

除了点击事件外,还有按键事件,例如按下键盘码为13的按钮时触发:

<input v-on:keyup.13="submit">

为了方便使用vue将一些常用按键重命名,可以使用事件修饰符来使用,包括:.enter、.delete、.tab、.space、.esc、.up、.down、.right、.left等,也可以自定义:

Vue.config.keyCodes.f1 = 112;

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
Sep 23 Javascript
JS求平均值的小例子
Nov 29 Javascript
用循环或if语句从json中取数据示例
Aug 18 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
js识别uc浏览器的代码
Nov 06 Javascript
JS实现保留n位小数的四舍五入问题示例
Aug 03 Javascript
less简单入门(CSS 预处理语言)
Mar 08 Javascript
vue :src 文件路径错误问题的解决方法
May 15 Javascript
echarts多条折线图动态分层的实现方法
May 24 Javascript
浅谈vuex的基本用法和mapaction传值问题
Nov 08 Javascript
Vue 数据响应式相关总结
Jan 28 Vue.js
Vue学习之组件用法实例详解
Jan 06 #Javascript
Vue+abp微信扫码登录的实现代码示例
Jan 06 #Javascript
Vue学习之axios的使用方法实例分析
Jan 06 #Javascript
vue 微信扫码登录(自定义样式)
Jan 06 #Javascript
React学习之JSX与react事件实例分析
Jan 06 #Javascript
vue学习之Vue-Router用法实例分析
Jan 06 #Javascript
借助云开发实现小程序短信验证码的发送
Jan 06 #Javascript
You might like
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
Javascript引用指针使用介绍
2012/11/07 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
竞选文艺委员演讲稿
2014/04/28 职场文书
教师工作失职检讨书
2014/09/18 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
拉贝日记观后感
2015/06/05 职场文书
陪护人员误工证明
2015/06/24 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
django中websocket的具体使用
2022/01/22 Python