vue指令系统
一、vue基础
使用vue需在官网上先下载vue.js,网址:https://cn.vuejs.org/v2/guide/installation.html。然后:
- 在project中引入vue.js
- vue实例化
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script> <!--引入vue.js文件-->
</head>
<body> <div id="app">{{info}}</div> <!--模版语言渲染数据-->
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
info:'hello world!'
}
}) </script> </body>
</html>
当进行实例化后,传入一个选项对象,其中以key-value存在的键值对,像el对象的就是所要操纵的区域,还有data数据属性对象。在将data中的数据渲染到页面上时需要使用vue中的模板语言(插值)。
#文本
{{ msg }}
#用 JavaScript 表达式
{{ number + 1 }}
{{ 3>2 ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
#注意,if条件语句是不行的
二、指令系统
vue中的指令是有着“v-”开头的特殊前缀,常用的指令有:
v-text
v-html
v-if
v-show
v-for
v-bind
v-on
1、v-if
<div id="app">
<p v-if="seen">v-if</p>
</div> <script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
seen:true
}
}) </script>
此时页面输出是可以看到v-if的,因为在data对象属性中,seen的值为true,如果:
... seen:false ...
不显示内容
另外,也可以在v-if中添加v-else进行条件渲染:
<div id="app">
<p v-if="seen">v-if</p>
<p v-else>no</p> //如果seen:false显示
</div>
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
seen:true
}, }) </script>
v-else-if,可以进行多次条件判断:
<div id="app">
<div v-if="type === 'A'">
A
</div>
<div v-else-if="type === 'B'">
B
</div>
<div v-else-if="type === 'C'">
C
</div>
<div v-else>
Not A/B/C
</div>
</div> var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
type:'B'
},
2、v-show
它与v-if相似,根据条件展示元素,用法大致一样:
<div id="app">
<p v-show="seen">可以看见我吗?</p> </div>
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
seen:true
}
}) </script>
v-show只是简单地切换元素的 CSS 属性display,v-if是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。v-if有更高的切换开销,而v-show有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show较好;如果在运行时条件很少改变,则使用v-if较好。
3、v-on
为了让用户和你的应用进行交互,我们可以用 v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法,例如下面通过v-on指令绑定事件,从而修改seen的值,达到前端是否显示v-if的内容。
<div id="app">
<p v-if="seen">v-if</p>
<button v-on:click="ifSeen">切换</button>
</div>
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
seen:true
}, methods:{
//声明事件
ifSeen:function(){
this.seen=!this.seen//修改data中seen的值,this表示vm对象
}
}
}) </script>
4、v-bind
- 动态地绑定一个或多个特性
<div id="app">
<!--动态绑定,数据根据data中的来填充-->
<p v-show="seen" v-bind:title="title">可以看见我吗?</p>
<img v-bind:src="data:imageSrc"><!--可以简写<img :src="data:imageSrc">--> </div>
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
seen:true,
title:"我是title",
imageSrc:"./1.jpg"
}
}) </script>
- 动态的绑定class属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script> <!--引入vue.js文件-->
</head> <style>
.box1{
background: aqua;
width: 300px;
height: 200px;
}
.box2{
background: red;
width: 300px;
height: 200px;
}
</style> <body> <div id="app">
<div class="box1" v-bind:class="{box2:isRed}"></div> <!--如果isRed为true那么class中就会有box1、box2-->
<button v-on:click="changeColor">切换颜色</button> </div> <script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
isRed:true
},
methods:{
changeColor:function () {
this.isRed = !this.isRed
}
} })
</script> </body>
</html>
上述是对象语法,还有数组语法:
//可以把一个数组传给 v-bind:class,以应用一个 class 列表:
<div v-bind:class="[activeClass, errorClass]"></div>
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
//渲染为:
<div class="active text-danger"></div>
- 动态绑定style样式属性
#对象语法
<div id="app">
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">你好</div>
</div>
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
activeColor:'red',
fontSize:30
}
}) </script> #或者
<div id="app">
<div v-bind:style="styleObject">你好</div>
</div>
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
styleObject:{
color: 'red',
fontSize: '20px'
}
}
}) </script>
上述是style的对象语法,还有数组语法:
#v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上 #<div v-bind:style="[baseStyles, overridingStyles]"></div> <div id="app">
<div v-bind:style="[baseStyles, overridingStyles]">你好</div>
</div>
<script>
var vm = new Vue({
el:'#app', #目标区域
data:{
#数据属性
baseStyles:{
color: 'red',
fontSize: '50px'
},
overridingStyles:{
color: 'green'
}
}
}) </script>
5、v-for
v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。
<ul id="example-1">
<li v-for="item in items">
{{ item.message }}
</li>
</ul> var example1 = new Vue({
el: '#example-1',
data: {
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
另外,v-for中还支持一个可选的第二个参数,即当前项的索引。
<ul id="example-2">
<li v-for="(item, index) in items">
{{ parentMessage }} - {{ index }} - {{ item.message }}//index是从0开始
</li>
</ul> var example2 = new Vue({
el: '#example-2',
data: {
parentMessage: 'Parent',
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
v-for还支持遍历对象:
new Vue({
el: '#v-for-object',
data: {
object: {
title: 'How to do lists in Vue',
author: 'Jane Doe',
publishedAt: '2016-04-10'
}
}
})
获取对象的属性
<ul id="v-for-object" class="demo">
<li v-for="value in object">
{{ value }} //获取值 {{ name }}: {{ value }} //获取键值和值 {{ index }}. {{ name }}: {{ value }} //获取索引、键值和值
</li> </ul>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script> <!--引入vue.js文件-->
</head>
<style>
.box{
width: 400px;
height: 200px;
}
ul{
list-style: none;
}
li{
float: left;
width: 30px;
height: 20px;
background: blueviolet;
margin-left: 15px;
text-align: center;
color: white; } </style>
<body> <div id="app">
<div class="box">
<img v-bind:src="currentSrc" v-on:mouseenter="closeTimer" v-on:click="openTimer">
<ul>
<li v-on:click="preImg" style="width: 50px ">上一张</li>
<li v-for="(item,index) in imgArr" v-on:click="selectImg(item)">{{item.id}}</li>
<li v-on:click="nextImg" style="width: 50px ">下一张</li>
</ul>
</div> </div>
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
imgArr:[
{id:1,src:'1.jpg'},
{id:2,src:'2.jpg'},
{id:3,src:'3.jpg'}, ],
currentSrc:'1.jpg',
currentIndex:0,//用于点击上一张和下一张使用
timer:null,//用于接收定时器对象,用于关闭定时器对象
}, created(){
//设置定时器,每2s进行轮播
this.timer=setInterval(this.nextImg,2000)
}, methods:{
selectImg:function (item) {
//点击图片下面的数字进行切换
this.currentSrc=item.src;
},
nextImg:function () {
//切换到下一张图片
if(this.currentIndex==this.imgArr.length-1){
this.currentIndex=-1
}
this.currentIndex++;
this.currentSrc=this.imgArr[this.currentIndex].src;
},
preImg:function () {
//切换到上一张图片
if(this.currentIndex==0){
this.currentIndex=this.imgArr.length
}
this.currentIndex--;
this.currentSrc=this.imgArr[this.currentIndex].src
},
closeTimer:function () {
//鼠标放置在图片上,关闭定时器
clearInterval(this.timer)
},
openTimer:function () {
//鼠标移开图片开启定时器
this.timer=setInterval(this.nextImg,2000)
} } }) </script> </body>
</html>
实现简单的轮播图效果
6、v-html
用于解析html标签
<div id="app">
<div>{{str}}</div> </div>
<script>
var vm = new Vue({
el:'#app', //目标区域
data:{
//数据属性
str:'<p>I am a tag!</p>'
}
}) </script> //输出 含有p标签
<p>I am a tag!</p>
如果使用v-html
<div id="app">
<div v-html="str">{{str}}</div> </div> //输出 不含p标签
I am a tag!
vue指令系统的更多相关文章
- day67:Vue:es6基本语法&vue.js基本使用&vue指令系统
目录 Vue前戏:es6的基本语法 1.es6中的let特点 1.1.局部作用域 1.2.不存在变量提升 1.3.不能重复声明 1.4.let声明的全局变量不从属于window对象,var声明的全局变 ...
- vue - 指令系统
指令系统: 所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. 1. ...
- vue——指令系统
指令系统,可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. 在vue中提供了一套为数 ...
- vue 指令系统的使用
所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. OK,接下来我们 ...
- 3. Vue - 指令系统
一.vue指令 (1) v-if // 条件判断 如果条件成立就在页面上生成一个标签并显示出来 (2) v-show //DOM中都存在只是显示与否 (3) v-for //注意 v-bind:key ...
- python全栈开发之路
一.Python基础 python简介 python数据类型(数字\字符串\列表) python数据类型(元组\字典) python数据类型(集合) python占位符%s,%d,%r,%f prin ...
- vue-learning:3-template-{{}}-and-v-html
插值{{ }} 和 v-html 本节开始,我们按如下顺序学习vue模板API-指令.点击各部分的DEMO可在线查看代码 输出字符串文本内容的插值:{{}} 输出HMTL元素作为内容的指令:v-htm ...
- vue-learning:2 - template - directive
指令 directive 在上一节我们知道,VUE的template模板通过VUE指令API实现与页面的视图层联系.所以本节将聚集在实现视图层交互的VUE指令系统directive的基础使用. 我们先 ...
- Vue的指令系统、计算属性和表单输入绑定
指令系统 指令 (Directives) 是带有 v- 前缀的特殊特性.指令特性的值预期是单个 JavaScript 表达式 (v-for 是例外情况,稍后我们再讨论).指令的职责是,当表达式的值改变 ...
随机推荐
- Java线程的优先级设置遵循什么原则?
Java线程的优先级设置遵从下述原则: (1) 线程创建时,子线程继承父线程的优先级 (2) 线程创建后,可在程序中通过调用setPriority( )方法改变线程的优先级 (3) 线程的优先级是1~ ...
- Python自动补全缩写意义
自动补全的变量的类别p:parameter 参数 m:method 方法(类实例方法)调用方式classA aa.method()或者classA().method() c:class 类 v:var ...
- Qt 样式表鼠标滑过按钮更改Text文本颜色
QSS语法参考http://blog.csdn.net/liang19890820/article/details/51691212 Qt助手上也有比较详细的说明,选择器以及伪选择器,现在只是做个简单 ...
- cocos2D-X 屏幕适配
{ //https://v.youku.com/v_show/id_XNTIzOTM1MDYw.html }
- cocos2D-X 显示中文
{ 将所在的cpp文件改为utf-8 无签名格式再编译 //但,治标不治本 }
- BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡(高斯消元+期望dp)
传送门 解题思路 设\(f(x)\)表示到\(x\)这个点的期望次数,那么转移方程为\(f(x)=\sum\frac{f(u)*(1 - \frac{p}{q})}{deg(u)}\),其中\(u\) ...
- SQL必知必会——创建和操纵表(十七)
1.创建表 一般有两种创建表的方法: 多数DBMS都具有交互式创建和管理数据库表的工具表也可以直接用SQL语句操纵1.1.表创建基础 CREATE TABLE products( prod_id,CH ...
- python 操作数据库的常用SQL命令
这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...
- java commons-fileupload servlet 多文件上传
commons-fileupload servlet 多文件上传 需要引入的 jar 包. commons-fileupload-1.3.2.jar commons-io-2.2.jar 工程路劲:查 ...
- RFC6241 NETCONF
概述 NETCONF = The Network Configuration Protocol SDN = Software Define Network NETCONF协议分为传输层.消息层.操作层 ...