Vue 2.0学习(三)指令与事件
指令(Directives)是Vue.js模板中最常用的一项功能,它带有前缀v-,前面已经使用过v-html、v-pre等。指令的主要职责就是当表达式的值改变时,相应地将某些行为应用到DOM上。
v-if
<!-- html -->
<div id="app">
<p v-if="show">显示这段文本</p>
</div>
//JS
var app = new Vue({
el: '#app',
data: {
show:true
}
})
当数据show的值为true时,p元素会被插入,为false时则会被移除。
v-bind
v-bind的基本用途是动态更新HTML元素上的元素,比如id、class等。
<!-- html -->
<div id="app">
<a v-bind:href="url">链接</a>
<img v-bind:src="imgUrl">
</div>
//JS
var app = new Vue({
el: '#app',
data: {
url: 'https://www.github.com'
imgUrl: 'http://xxx.xxx.xx/img.png'
}
})
v-on
v-on用来绑定时间监听器,做一些事件交互。
<!-- html -->
<div id="app">
<p v-if="show">这是一段文本</p>
<button v-on:click="handleClose">点击隐藏</button>
</div>
//JS
var app = new Vue({
el: '#app',
data: {
show:true
},
methods:{
handleColse: function() {
this.show = false;
}
}
})
在button按钮上,使用v-on:click给该元素绑定了一个点击事件,在普通元素上,v-on可以监听原生的DOM事件,除了click外,还有dblclick、keyup、mousemove等。
表达式除了方法名,也可以直接是一个内联语句。
<!-- html -->
<div id="app">
<p v-if="show">这是一段文本</p>
<button v-on:click="show = false">点击隐藏</button>
</div>
//JS
var app = new Vue({
el: '#app',
data: {
show:true
}
})
如果绑定的事件要处理复杂的业务逻辑,建议还是在methods里声明一个方法,这样可读性更强也更好维护。
Vue.js将methods里的方法也代理了,所以也可以像访问Vue数据那样来调用方法。
//JS
var app = new Vue({
el: '#app',
data: {
show:true
},
methods:{
handleColse: function() {
this.close();
},
close: function(){
this.show = false;
}
}
})
语法糖
语法糖是指在不影响功能的情况下,添加某种方法实现同样的效果,从而方便开发程序。
Vue.js的v-bind和v-on指令都提供了语法糖,也可以说是缩写,比如v-bind,可以省略v-bind,直接写一个冒号":"。
<a v-bind:href="url">链接</a>
<img v-bind:src="imgUrl">
<!-- 缩写为 -->
<a :href="url">链接</a>
<img :src="imgUrl">
v-on可以直接用"@"来缩写
<button v-on:click="handleClose">点击隐藏</button>
<!-- 缩写为 -->
<button @click="handleClose">点击隐藏</button>
Vue 2.0学习(三)指令与事件的更多相关文章
- Vue源码学习三 ———— Vue构造函数包装
Vue源码学习二 是对Vue的原型对象的包装,最后从Vue的出生文件导出了 Vue这个构造函数 来到 src/core/index.js 代码是: import Vue from './instanc ...
- Vue.2.0.5-自定义指令
简介 除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令.注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件--然而,有的情况下,你仍然需要对纯 D ...
- vue 源码学习三 vue中如何生成虚拟DOM
vm._render 生成虚拟dom 我们知道在挂载过程中, $mount 会调用 vm._update和vm._render 方法,vm._updata是负责把VNode渲染成真正的DOM,vm._ ...
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...
- Vue 2.0学习(七)方法与事件
基本用法 以监听一个按钮的点击事件为例,设计一个计数器,每次点击都加1: <div id = "app"> 点击次数:{{ counter }} <button ...
- Vue 2.0学习(六)内置指令
基本指令 1.v-cloak v-cloak不需要表达式,它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和CSS的display:none配合使用. <div id="ap ...
- vue.js介绍,常用指令,事件,以及制作简易留言版
一.vue是什么? 一个mvvm框架(库).和angular类似,比较容易上手.小巧,让我们的代码更加专注于业务逻辑,而不是去关注DOM操作 二.vue和angular之间的区别 vue--简单易学 ...
- Vue 2.0 学习路线
「 Vue很难学吗 」 对于我这种从0.x版本就开始体验 vuejs 的人来说,当然不算难,那时候没各种脚手架和复杂搭配,仅仅是一个mvvm的解决方案库而已,解决了jq带来的繁琐操作dom痛点,所以就 ...
- 使用TypeScript给Vue 3.0写一个指令实现组件拖拽
最近在用vue3重构后台的一个功能.一个弹窗组件,弹出一个表单.然后点击提交. 早上运维突然跑过来问我,为啥弹窗挡住了下边的表格的数据,我添加的时候,都没法对照表格来看了.你必须给我解决一下. 我参考 ...
随机推荐
- 《JavaScript 实战》:JavaScript 实现拖拽缩放效果
拖拉缩放效果,实现通过鼠标拖动来调整层的面积(宽高)大小,例如选框效果.这里的拖拉缩放比一般的选框复杂一点,能设置八个方位(方向)的固定触发点,能设置最小范围,最大范围和比例缩放. 跟拖放效果一样,程 ...
- jQuery 写的简单打字游戏
var off_x; //横坐标 var count=0; //总分 var speed=5000; //速度,默认是5秒. var keyErro=0; //输入错误次数 var keyRight= ...
- R0—New packages for reading data into R — fast
小伙伴儿们有福啦,2015年4月10日,Hadley Wickham大牛(开发了著名的ggplots包和plyr包等)和RStudio小组又出新作啦,新作品readr包和readxl包分别用于R读取t ...
- 【vijos】P1190 繁忙的都市
[算法]最小生成树 #include<cstdio> #include<algorithm> using namespace std; ; ]; int fa[maxn],he ...
- 在Java中,你真的会日期转换吗
1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormat is a concrete class for form ...
- HDU 1256 画8 (找规律)
题目链接 Problem Description 谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发. Input 输入的第一行为一个整数N,表示后面有N组数据. 每组数据中 ...
- lintcode 443.岛屿的个数
在v2ex上看到有人提到了这个,感觉挺简单的,没忍住还是试一下.... 基本的染色法. AC代码: public class Solution { /** * @param grid a boolea ...
- $NTT$(快速数论变换)
- 概念引入 - 阶 对于$p \in N_+$且$(a, \ p) = 1$,满足$a^r \equiv 1 (mod \ p)$的最小的非负$r$为$a$模$p$意义下的阶,记作$\delta_p ...
- openjudge-NOI 2.6-2985 数字组合
题目链接:http://noi.openjudge.cn/ch0206/2985/ 题解: 跟背包问题有点相似,暂且算背包型DP吧,虽然是一道递推题…… fj表示和为j时的结果,得: 即为j减去每一个 ...
- Python多态、鸭子类型
一.多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.ab ...