Vue.js学习笔记--2.基础v-指令
整理自官网教程 -- https://cn.vuejs.org/
1. v-bind绑定Class与Style
a. 绑定Class
语法:v-bind:class="{classname:boolParam} | object"
其中,classname为类名,boolParam为data中声明的bool变量,object为类对象。
也可将class绑定到数组,数组内可为class变量名或带bool的class。以下例子渲染结果均为<div class="active"></div>。
<div v-bind:class="{ active: isActive, 'text-danger': hasError }"></div>
<div v-bind:class="classObject"></div>
<div v-bind:class="computedClass"></div>
<div v-bind:class="[activeClass, {'text-danger':hasError}]"></div>
var app = new Vue({
el:'#app',
data:{
isActive: true,
hasError: false,
error: null,
classObject: {
active: true,
'text-danger': false
},
activeClass: 'active',
},
computed: {
computedClass: function() {
return {
active: this.isActive && !this.hasError,
'text-danger': this.hasError && this.error
}
}
}
})
b. 绑定style
语法:v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' } | object"
其中,activeColor和fontSize为在data内声明的变量,object为style对象,绑定style的用法与class类似。
2. v-if 条件渲染
语法: v-if=boolParam | JS表达式
相关指令: v-else-if 、v-else
Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染,除非为元素添加唯一标识属性"key"。
如下例中,切换username时,input框会重新渲染,label不会。
<template v-if="loginType === 'username'">
<label>Username</label>
<input placeholder="Enter your username" key="username-input">
</template>
<template v-else>
<label>Email</label>
<input placeholder="Enter your email address" key="email-input">
</template>
对比v-show:
带有 v-show 的元素始终会被渲染并保留在 DOM 中,v-show 只是简单地切换元素的 CSS 属性 display。v-show 不支持 <template> 元素,也不支持 v-else。
3. v-for 列表渲染
语法:v-for="item in/of items"
items为data中声明的数组或对象,item为每项的别名。为了提升v-for的复用效率,也应为每项元素绑定"key"。用例如下。
<ul id="example-2">
<!--遍历数组,index为索引,可只写item-->
<li v-for="(item, index) in items">
{{ parentMessage }} - {{ index }} - {{ item.message }}
</li>
<br/>
<!--遍历对象,key为键名,可只写value,添加了绑定的key属性-->
<li v-for="(value, key, index) in person" :key="index">
{{ index }}. {{ key }}: {{ value }}
</li>
</ul>
var app = new Vue({
el: '#example-2',
data: {
parentMessage: 'Parent',
items: [
{ message: 'Foo' },
{ message: 'Bar' }
],
person: {
firstName: 'John',
lastName: 'Doe',
age: 30
}
}
})
数组更新检测:
a) 使用Vue提供的变异方法会改变原始数组,如push()、pop()等。
b) 使用非变异方法会得到一个新数组,如filter()、concat()、slice()等。
c) 以上两项会触发视图更新,但直接利用索引设置一个项的值或修改数组长度时,不会触发。需要用Vue.set()、vm.items.splice()等方法代替。
显示过滤/排序结果:
可以通过computed属性或methods,返回需要的结果数组。
备注:
a) 当 v-for 和 v-if 处于同一节点时, v-for的优先级比 v-if 更高,即v-if会在每个循环中运行。若要先执行v-if,则可将其置于v-for的父元素或<template>上。
b) 2.2.0+的vue版本里,在组件中使用v-for时,key是必须的。
4. v-on 监听事件
语法: v-on:eventName="methodsName"
其中eventName为事件名,methodsName为实例中声明的方法。v-on:可缩写为@,使用如下。
<div id="app">
<button v-on:click="greet">Greet</button>
<button @click="say('hi')">Say hi</button>
<button @click="say('what')">Say what</button>
</div>
var app = new Vue({
el: '#app',
data: {
name: 'Vue.js'
},
// 在 `methods` 对象中定义方法
methods: {
greet: function (event) {
// `this` 在方法里指向当前 Vue 实例
alert('Hello ' + this.name + '!')
// `event` 是原生 DOM 事件
if (event) {
alert(event.target.tagName)
}
},
say: function (message) {
alert(message)
}
}
})
修饰符:
a. 事件修饰符:.stop、.prevent、.self等,可串联添加在事件后,如@click.stop等,可处理DOM事件细节。
b. 按键修饰符:按键别名如.enter、.tab等,可用@keyup.enter=""监听回车按键事件。
Vue.js学习笔记--2.基础v-指令的更多相关文章
- Vue.js学习笔记--1.基础HTML和JS属性的使用
整理自官网教程 -- https://cn.vuejs.org/ 1. 在HTML文件底部引入Vue <script src="https://cdn.jsdelivr.net/npm ...
- Vue.js学习笔记:在元素 和 template 中使用 v-if 指令
f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- Vue.js 学习笔记之四:Vue 组件基础
到目前为止,这个系列的笔记所展示的都是一些极为简单的单页面 Web 应用程序,并且页面上通常只有几个简单的交互元素.但在实际生产环境中,Web 应用程序的用户界面往往是由多个复杂的页面共同组成的.这时 ...
- Vue.js 学习笔记 第5章 内置指令
本篇目录: 5.1 基本指令 5.2 条件渲染指令 5.3 列表渲染指令 v-for 5.4 方法与事件 5.5 实战:利用计算属性.指令等知识开发购物车 回顾一下第2.2节,我们己经介绍过指令(Di ...
- Vue.js——学习笔记(一)
Vue-自学笔记 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...
- Vue.js——学习笔记
Vue-自学笔记 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...
- Vue.js 学习笔记 一
本文的Demo和源代码已放到GitHub,如果您觉得本篇内容不错,请点个赞,或在GitHub上加个星星! https://github.com/zwl-jasmine95/Vue_test 以下所有知 ...
随机推荐
- Git撤销&回滚操作
开发过程中.你肯定会遇到这种场景: 场景一: 糟了.我刚把不想要的代码.commit到本地仓库中了.可是还没有做push操作! 场景二: 彻底完了.刚线上更新的代码出现故障了.须要还原这次提交的代码! ...
- 深刻理解Java中形參与实參,引用与对象的关系
声明:本博客为原创博客,未经同意.不得转载! 原文链接为http://blog.csdn.net/bettarwang/article/details/30989755 我们都知道.在Java中,除了 ...
- Ubuntu 14.04正式公布,一个不眠之夜
请看下图: 这就是Ubuntu 14.04 LTS桌面版本号的一份视图.感觉既亲切,又寻常,可是,没有什么大的变化.注意:这个Ubuntu桌面版本号要陪伴我们长达5年之久! 直到4月18日(北京时间) ...
- eclipse中经常使用快捷键
熟练一些快捷键,会使你的开发更加快捷.高效,值得花些时间学一下! 1. ctrl+shift+r:打开资源 这可能是全部快捷键组合中最省时间的了.这组快捷键能够让你打开你的工作区中不论什么一个文件,而 ...
- Win32 Windows编程 七
定时器消息 1. WM_TIMER 依照定时器设置的时间段,自己主动向窗体发送一个定时器消息WM_TIMER.优先级比較低 定时器精度比較低.毫秒级别.消息产生时间也精度比較低 2 .消息和函数 WM ...
- YTU 2960: 改错题--小鼠标,你要干什吗?
2960: 改错题--小鼠标,你要干什吗? 时间限制: 1 Sec 内存限制: 128 MB 提交: 118 解决: 62 题目描述 鼠标双击不同的图标产生不同的效果,比如双击文档(documen ...
- 浅谈Linux Kernel 中循环链表的实现
前阵子在弄缓存的时候,我们需要将qemu对于磁盘镜像文件写请求串成一个链表,最终将这个链表里面的写请求全部刷回到镜像文件里面,那么我们便需要一个强健,可靠的链表的接口,于是我们仿照Linux 2.4. ...
- iOS 7 present/dismiss转场动画
前言 iOS 7以后提供了自定义转场动画的功能,我们可以通过遵守协议完成自定义转场动画.本篇文章讲解如何实现自定义present.dismiss自定义动画. 效果图 本篇文章实现的动画切换效果图如下: ...
- AutoIT: 处理GridView控件的一些折中方法
一般情况下,Gridview是无法通过AutoIT Window Info来获取控件信息的,但是可以有折中的办法对Gridview中的字段赋值. #include<array.au3> $ ...
- 小程序-demo:天气预报
ylbtech-小程序-demo:天气预报 1.返回顶部 1.app.js //app.js App({ //系统事件 onLaunch: function () {//小程序初始化事件 var th ...