Vue(三)指令
v-text:更新元素的text内容
<template>
<div class="about">
<p v-text="msg"></p>
<!--和下面效果一样-->
<p>{{msg}}</p>
</div>
</template>
<script>
export default {
components: {MyList},
data: ()=> ({
msg: '更新元素的 textContent。如果要更新部分的 textContent ,需要使用 {{ Mustache }} 插值。'
})
}
</script>
页面:

v-html:更新元素的innerHTML,这里面的内容不会作为Vue模板编译
<template>
<div class="about">
<!--v-html 内容不会被处理-->
<p v-html="msg"></p>
<!--v-text 内容会被作为vue模板编译-->
<p v-text="msg"></p>
</div>
</template>
<script>
export default {
data: ()=> ({
msg: '<h1>在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。</h1>' +
'<h1>只在可信内容上使用 v-html,永不用在用户提交的内容上。</h1>'
})
}
</script>
页面:

v-show:根据表达式之真假值,切换元素的 display CSS 属性
<template>
<div class="about">
<p v-show="flag" v-text="msg"></p>
</div>
</template>
<script>
export default {
data: ()=> ({
flag: true,
msg: '根据表达式之真假值,切换元素的 display CSS 属性'
})
}
</script>
页面:

v-if:根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。
<template>
<div class="about">
<p v-if="flag" v-text="msg"></p>
</div>
</template>
<script>
export default {
data: ()=> ({
flag: true,
msg: '根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。'
})
}
</script>
页面:

如果flag=false,那么元素不会被渲染

v-else:前一兄弟元素必须有 v-if 或 v-else-if
<template>
<div class="about">
<p v-if="flag" v-text="msg"></p>
<p v-else>我是穷逼</p>
</div>
</template>
<script>
export default {
data: ()=> ({
flag: false,
msg: '我很有钱'
})
}
</script>
页面:

v-else-if:前一兄弟元素必须有 v-if 或 v-else-if
<template>
<div class="about">
<p v-if="flag == 1">{{msg}}</p>
<p v-else-if="flag == 2">我假装我很有钱</p>
<p v-else>我是穷逼</p>
</div>
</template>
<script>
export default {
data: ()=> ({
flag: 2,
msg: '我很有钱'
})
}
</script>
页面:

v-for
<template>
<div class="about">
<div v-for="(item,index) in items">
{{index}} -- {{ item }}
</div>
</div>
</template>
<script>
export default {
data: ()=> ({
items: ['鱼香肉丝','宫保鸡丁','炖排骨']
})
}
</script>
页面:

v-on:事件处理
缩写:@
修饰符:
.stop - 阻止事件冒泡
.prevent - 阻止默认事件
.capture
.self
.once - 只触发一次回调。
.passive
.native - 监听组件根元素的原生事件。 按键修饰符
.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right 系统修饰键
.ctrl
.alt
.shift
.meta - 在 Mac 系统键盘上,meta 对应 command 键 (⌘)。在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞) 鼠标按钮修饰符
.left
.right
.middle
代码
<template>
<div class="about" @click="parentClick">
<button @click="aClick">普通点击事件</button>
<br><br>
<button @click.stop="bClick">阻止冒泡事件</button>
<br><br>
<a href="https://www.qq.com/" @click.stop.prevent="cClick">阻止默认事件</a>
<br><br>
<button @click.once="dClick">执行一次事件</button>
<br><br>
<input @keyup.enter="eClick" placeholder="有本事按Enter"/>
<br><br>
<input @click.stop.ctrl="fClick" placeholder="有本事按Ctrl+Click"/>
<br><br>
<input @keydown.ctrl.alt="gClick" placeholder="有本事按Ctrl+Alt"/>
<br><br>
<button @click.stop.left="hClick">鼠标左键事件</button>
</div>
</template>
<script>
export default {
methods: {
parentClick: function () {
alert('父元素点击事件')
},
aClick: function () {
alert('普通点击事件')
},
bClick: function () {
alert('点击之后,不再继续冒泡到父元素')
},
cClick: function () {
alert('点击之后,不再触发默认跳转事件')
},
dClick: function () {
alert('只能点击一次,你再也不能看见我')
},
eClick: function () {
alert('监听回车事件')
},
fClick: function () {
alert('监听Ctrl+Click事件')
},
gClick: function () {
alert('监听Ctrl+Alt事件')
},
hClick: function () {
alert('监听鼠标左键事件')
},
}
}
</script>
页面:

v-bind:动态绑定
缩写: :
<template>
<div class="about">
<!--绑定src属性-->
<img :src="imgSrc"/>
<!--绑定class:数组方式-->
<div :class="[myClass]"></div>
<!--绑定class:class 存在与否将取决于数据属性 active-->
<div :class="[myClass,{'area-active': active}]"></div>
<div style="text-align: center">
<!--:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用单引号括起来) 来命名-->
<span :style="{display: 'inline-block',width: width1 + 'px',height: width1 + 'px',backgroundColor: color1}"></span>
<span :style="{display: 'inline-block',width: width2 + 'px',height: width2 + 'px',backgroundColor: color2}"></span>
<!--:style 的数组语法-->
<span :style="[styleObject]"></span>
</div>
</div>
</template>
<script>
export default {
data: ()=> ({
styleObject: {
display: 'inline-block',
width: '150px',
height: '150px',
'background-color': '#2990c4'
},
width1: 50,
color1: '#12BC99',
width2: 100,
color2: '#9455bc',
active: true,
myClass: 'area',
imgSrc: 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=935292084,2640874667&fm=27&gp=0.jpg'
})
}
</script>
<style scoped>
.area{
margin: 8px auto;
width: 50px;
height: 50px;
background-color: darkcyan;
}
.area-active{
background-color: crimson;
}
</style>
页面:

v-model:表单绑定
限制:
<input>
<select>
<textarea>
components
修饰符:
.lazy - 取代 input 监听 change 事件
.number - 输入字符串转为有效的数字
.trim - 输入首尾空格过滤
<template>
<div class="about">
<div>Message is: {{msg}}</div>
<br/>
<input v-model="msg"/>
<br/><br/>
<!--textarea绑定-->
<textarea v-model="msg" cols="80" rows="5"></textarea>
<br/><br/>
<!--复选-->
<input type="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
<br/><br/>
<!--复选数组-->
<div>
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<br>
<span>Checked names: {{ checkedNames }}</span>
</div>
<br/><br/>
<!--单选数组-->
<div>
<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<br>
<span>Picked: {{ picked }}</span>
</div>
<br/><br/>
<!--select的绑定-->
<div>
<select v-model="selected">
<option v-for="option in options" v-bind:value="option.value">
{{ option.text }}
</option>
</select>
<span>Selected: {{ selected }}</span>
</div>
<br/><br/>
<!--自动将用户的输入值转为数值类型-->
<input type="number" v-model.number="age"/>
<span>{{typeof age}}</span>
<br/><br/>
<!--自动过滤用户输入的首尾空白字符-->
<input v-model.trim="msgs">
<p>{{msgs}}</p> <!--取消实时同步-->
<input v-model.lazy="lmsgs">
<p>{{lmsgs}}</p>
<br/><br/>
</div>
</template>
<script>
export default {
data: ()=> ({
age: 10,
selected: '',
options: [
{ text: 'One', value: 'A' },
{ text: 'Two', value: 'B' },
{ text: 'Three', value: 'C' }
],
picked: [],
checkedNames: [],
checked: false,
msg: '你可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。',
msgs: '',
lmsgs: '',
})
}
</script>
页面:

v-pre:跳过这个元素和它的子元素的编译过程。
<template>
<div class="about">
<div v-pre>{{这里面的内容不会被编译}}</div>
</div>
</template>
<script>
export default {
data: ()=> ({ })
}
</script>
页面:

v-once:只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。
<template>
<div class="about">
<div v-once>{{msg}}</div>
<input v-model="msg"/>
</div>
</template>
<script>
export default {
data: ()=> ({
msg: '这里只编译一次'
})
}
</script>
页面

之后再改变数据模型,v-once部分不会再改变
Vue(三)指令的更多相关文章
- vue自定义指令,比onerror更优雅的方式实现当图片加载失败时使用默认图,提供三种方法
首先,来看下效果图(演示一下图片正常加载与加载失败时的效果) 在线体验地址:https://hxkj.vip/demo/vueImgOnerror/ 一.常规方法解决 我们都知道,img标签支持one ...
- vue的指令
我之前学了学angular 发现angular和vue的指令有点类似 先说一下 new Vue({ el: "#box", // element(元素) 当前作 ...
- vue之指令
一.什么是VUE? 它是构建用户界面的JavaScript框架(让它自动生成js,css,html等) 二.怎么使用VUE? 1.引入vue.js 2.展示HTML <div id=" ...
- vue之指令篇 ps简单的对比angular
这两天在开始vue的大型项目,发现和ng还是有许多不同,这里对比下两者的指令系统 难度系数:ng的指令难度大于vue:至少vue上暂时没发现@&=:require,compile,precom ...
- 第3章-Vue.js 指令扩展 和 todoList练习
一.学习目标 了解Vue.js指令的实现原理 理解v-model指令的高级用法 能够使用Vue.js 指令完成 todoList 练习(重点+难点) 二.todoList练习效果展示 2.1.效果图展 ...
- 第2章-Vue.js指令
一.学习目标 了解 什么 是 Vue.js 指令 理解 Vue.js 指令的 用途 掌握 Vue.js 指令的书写规范 能够 使用 Vue.js 指令完成部门页面交互效果(难点和重点) 二.指令的基本 ...
- Vue的指令以及组件化开发
一. 自定义指令 如何: 1. 创建指令 Vue.directive("指令名",{ inserted(elem){//指令所在的元素被加载到DOM树上后自动执行指令 //elem ...
- 使用Vue自定义指令实现Select组件
完成的效果图如下: 一.首先,我们简单布局一下: <template> <div class="select"> <div class="i ...
- Vue的指令和成员
目录 Vue的指令和成员 指令 表单 斗篷 条件 循环 成员 计算成员 监听成员 Vue的指令和成员 指令 表单 表单指令一般是和属性指令联合使用的,最常见的就是v-model="变量&qu ...
- Vue自定义指令 数据传递
在项目开发过程中,难免会遇到各种功能需要使用Vue自定义指令--directive 去实现 .关于directive的使用方式这里就不做过多的介绍了,Vue官方文档中说的还是听明白的.今天讲讲在使用V ...
随机推荐
- Vue 单选框与单选框组 组件
radio组件 v-model : 通过当然绑定的值与input上的value值来确定当前选中项. 在父作用域中通过active设置当前默认选中项,如果选中项发生改变后通过input事件通知传递到父 ...
- Android 简单统计文本文件字符数、单词数、行数Demo
做的demo是统计文本文件的字符数.单词数.行数的,首先呢,我们必须要有一个文本文件.所以我们要么创建一个文本文件,并保存,然后再解析:要么就提前把文本文件先放到模拟器上,然后检索到文本名再进行解析. ...
- C++,std::shared_future的使用
今天给大家分享一个类似多线程任务的方法,具体如下: std::shared_future<int> tmp = std::async(p1,p2,p3); int tmpInt = tmp ...
- maven项目更换本地仓库
由于电脑重装系统更换原来maven项目的本地仓库 以前的仓库位置如图 需要更换的仓库位置 更换步骤如下: 更换后:
- IDEA 最新版永久破解最简单方法(版本 IntelliJ IDEA 2018.3.5)
版权声明:本文为博主原创文章,仅作为学习交流使用,请在阅读后自行删除, 未经博主允许不得转载.https://www.cnblogs.com/linck/p/10522045.html 1.官网下载专 ...
- Windows 10 远程连接出现函数错误 【这可能由于CredSSP加密Oracle修正】
win+R 弹出窗口输入gpedit.msc 计算机配置=>管理模板=>系统=>凭据分配=>加密Oracle修正 编辑策略设置=>已启用=>保护级别=>易受攻 ...
- Jquery消息提示插件toastr使用详解
toastr是一个基于jQuery简单.漂亮的消息提示插件,使用简单.方便,可以根据设置的超时时间自动消失. 1.使用很简单,首选引入toastr的js.css文件 html <script s ...
- shader高级纹理学习总结
最近看了shader的高级纹理 做个总结 复习! shader迟早是要拿下的
- 从Linux 与 Unix 异同,看开源世界的发展!
从Linux 与 Unix 异同,看开源世界的发展! 如果你是一名20多岁或30多岁的软件开发人员,那么你已成长在一个由Linux主导的世界中.数十年来,它一直是数据中心的重要参与者,尽管很难找到明确 ...
- pytorch的函数中的group参数的作用
1.当设置group=1时: conv = nn.Conv2d(in_channels=, out_channels=, kernel_size=, groups=) conv.weight.data ...