Vue --- 基础指令
Vue使用
1.如何使用vue
在页面上写上一个标签,在标签中定义一个id值,在script中对id值进行实例--------简单的实例
<div id="d1">
<p v-on:click="pClick" v-bind:style="aaa" v-once>{{ info }}</p>
</div>
<script>
new Vue({
el:'#d1'
})
</script>
# 总结:通常挂载点都采用id选择器(唯一性),html与body不能作为挂载点,只能控制挂载点的内部
如果要对标签进行一些属性值的设置,比如颜色,事件之类,需要借助vue来实现
div id="d1">
<p v-on:click="pClick" v-bind:style="aaa" v-once>{{ info }}</p>
</div>
<script>
let app1 = new Vue({
el:'#d1', # 挂载点,vue实例与页面标签建立关联,
data:{ # data为挂载点内部提供数据
info:'message', # 挂载点中的info显示的数据
aaa:{
color:'red' # 定义的颜色
}
},
methods:{ # 函数
pClick:function () {
app1.aaa.color = 'blue';
this.info='更改了'
},
}
});
</script>
# el 挂载点
# data 数据 在使用的时候必须加(),变成一个函数,
# methods 函数
# v-on: 函数,在methods中写
# v-bind: css属性值,在data中写
声明的实例是否用一个变量接收
1.在实例内部不需要,用this就代表当前vue实例本身
2.在实例外部或其他实例内部需要定义一个变量接收 new vue产生的实例
2.插值表达式
可以通过简单的逻辑运算在前端进行计算
{{ info }}
在data中先定义info变量,然后在{{ info }}直接输入加减乘除,注意的是这里的计算只能是一次性做完的,不能分开做,
例:
{{ info*2 }}
{{ info.split('') }}
3.文本指令
{{ }} 被定义的时候解析大括号内的内容
v-text 不能解析html语法的文本,会原样输出
v-html 能解析html语法的文本
v-once 处理的标签内容只能被解析一次
使用
<p>{{ info }}</p>
<div id="d2"><p v-text="msg"></p></div>
let app = new Vue({
el:'#d2',
data:{
msg:'qweqweqweqweqwe' ,
}
<div id="d2"><p v-html="msg"></p></div>
let app = new Vue({
el:'#d2',
data:{
msg:'<i>qweqweqweqweqwe</i>' ,
}
<p v-on:click="pClick" v-bind:style="aaa" v-once>{{ info }}</p> 当其他标签信息更改的时候,此标签中的内容不会进行更改
4.事件指令
v-on:事件="变量" # 经典情况
@事件="变量" # 简写情况
@事件="func()" # 括号内可以传入实参 ,自己传入参数
@事件="func(method)" # 通过method将传入的值取出来,与函数中的参数使用一样
常用事件
1.mouseover 鼠标悬浮事件
2.mousedown 鼠标按下触发
3.mouseup 鼠标抬起
4.mouseove 鼠标移动
5.click 点击事件
6.change 更改事件
变量加括号可以传参,一旦加括号了就表示要自己传参,根据接收到的多少,多传不显示,少传剩下的会显示ondefind
事件变量,不加括号,默认会传入事件对象:$event
常见参数:
1.ev 事件对象
2.argv
# 新使用方法
<p @click="page='r_page'">点击获取信息</p>
data(){
return{
page:'r_page'
}
},
5.属性指令
作用:可以更改对应标签的属性情况,在data中进行定义后,可以通过事件,函数的更改来改变标签的属性表现情况。
v-bind:属性名="变量" # 正常写
:属性名="变量" # 简写
<!-- 给自定义全局属性绑定变量 -->
<p v-bind:abc="abc"></p>
<!-- 以原字符串形式绑定全局属性 -->
<p v-bind:title="'abc'"></p>
<!-- 单类名绑定 -->
<p v-bind:class="c1"></p>
<!-- 多类名绑定 -->
<p v-bind:class="[c2, c3]"></p>
<!-- 类名状态绑定 -->
<p v-bind:class="{c4: true|false|var}"></p>
<!-- 多类名状态绑定 -->
<p v-bind:class="[{c5: true}, {c6: flase}]"></p>
<!-- 样式绑定 -->
<div :style="div_style"></div>
<div :style="{width: '100px', height: '100px', backgroundColor: 'blue'}"></div>
<script type="text/javascript">
new Vue({
el:"#app",
data: {
abc: "abc",
c1: "p1",
c2: "p2",
c3: "p3",
div_style: {
width: "200px",
height: "200px",
backgroundColor: "cyan"
}
}
})
</script>
<!-- v-bind: 指令可以简写为 : -->
常见属性:
title
6.表单指令
使用方法:
v-model="变量" # 变量值与表单标签的value相关
v-model可以实现数据的双向绑定,v-model绑定的变量值可以影响表单标签的值,反过来表单标签的值也可以影响变量的值
文本框
<input type="text" name="name" id="user" placeholder="请输入账号" v-model="v1">
<input type="text" v-model="v1" name="user">
data(){
return{
v1:'123' 先定义一个默认值
}
}
会将两个框中的数据进行联动,一个框中的值会随着另外一个框中的值的变化而变化
单选框
<p>男:<input type="radio" name="sex" value="male" v-model="v2"></p>
<p>女:<input type="radio" name="sex" value="female" v-model="v2"></p>
v2:'female' 默认选择的是female,页面刷新之后就会默认选择自定义的属性,必须与value一起使用
checked 表示默认选中,参数
多选框
111:<input type="checkbox" name="hobbies" value="111" v-model="v3">
222:<input type="checkbox" name="hobbies" value="222" v-model="v3">
333:<input type="checkbox" name="hobbies" value="333" v-model="v3">
v3:['111','222'] 会在页面上自动默认选中自己定义的框
id与name与value
id
编号id具有唯一性,一个id只出现一次。
一般在JavaScript中经常出现。
value
- 按钮中用的value 指的是按钮上要显示的文本 比如“确定”“删除”等
- 复选框用的value 指的是这个复选框的值
- 单选框用的value 和复选框一样
- 下拉菜单用的value 是列表中每个子项的值
- 隐藏域用的value 是框里面显示的内容
在后台如果你想得到复选框的内容 就是value 来取 当你在接收表单数据的页面中获取数据时,得到的就是value的值
name
- name是控件的名称(多个控件可以取同一个名称),value是控件的值;
- 并不是所有控件的value都会显示出来,比如 checkbox, radio, hidden;
- 定义控件的 name和value 就可以在服务器上获取这个控件和它的值;
- 没看到 submit 的name,并不表示浏览器忽略了它的 name,在提交之前它也被浏览器定义了
- name,在服务器上一样可以得到它的 name 和 value;
- 控件不定义name/value也可以显示,只是为了方便在服务器接收和区别,才定义它的 name/value
- 当然按钮的 value 不光是存放它的值,也用来显示。
简单的说就是对表单的操作,vue是一个编写前段的框架,这些指令都是对前端的一些操作。
7.条件指令
对条件进行判断,如果条件成立,就执行,条件不成立,就不执行
v-show = "布尔变量" 会以display的行式显示
v-if = "布尔变量" 为false的时候, 直接就不显示,页面代码也不显示,用的最多(保证不渲染的数据泄露)
v-if
v-if
v-else-if
v-else
8.循环指令
循环指令使用的方式:
v-for = " c in info"
v-for = " (k,v) in info"
v-for = "(v,k,i) in info"
使用实例
<i v-for="c in info">{{ c }} </i>
<i v-for="(c, i) in info">{{i}}:{{c}}<br></i>
<div v-for="e in stus">{{ e }}</div>
<div v-for="(e, i) in stus">{{ i }}:{{ e }}</div>
<div v-for="v in people">{{ v }}</div>
<div v-for="(v, k, i) in people">{{ i }} - {{ k }}:{{ v }}</div>
<div v-for="tea in teas">
<span v-for="(v, k, i) in tea"><span v-if="i !== 0"> | </span>{{ k }}:{{ v }}</span>
</div> # 可以循环嵌套标签使用
针对for循环使用的一些方法
unshift, push 是首尾增
shift,pop 是首尾删
数组操作最全的方法:splice
splice(begin_index,count,...argsl,)
10.过滤器
过滤器的作用就是对值进行一次筛选,将值按照要求进行输出
1.在filters中定义过滤器方法
2.可以对多个值进行过滤,过滤时还可以额外传入辅助参数
3.过滤的结果可以再进行下一次过滤
<p>{{ num | f1 }}</p>
<p>{{ a, b | f2(30, 40) | f3 }}</p>
filters: {
// 传入所有要过滤的条件,返回值就是过滤的结果
f1 (num) {
console.log(num);
return num * 10;
},
f2 (a, b, c, d) {
console.log(a, b, c, d);
return a + b + c + d;
},
f3 (num) {
return num * num;
}
}
10.计算属性
1.computed计算属性可以声明方法属性(方法属性不一定在data中重复声明)
2.方法属性必须在页面中渲染,才会启用绑定的方法,方法属性的值就是绑定方法的返回值
3.绑定的方法中出现的所有变量都会被监听,任何一个变化发生值更新都会重新触发绑定方法,从而更新方法属性的值
4.一般用来解决的问题:一个变量依赖于多个变量
<div id="app">
<input type="number" min="0" max="100" v-model="n1">
+
<input type="number" min="0" max="100" v-model="n2">
=
<button>{{ result }}</button>
</div>
data: {
n1: '',
n2: '',
},
computed: {
result () {
console.log('被调用了');
n1 = +this.n1;
n2 = +this.n2;
return n1 + n2;
}
}
11.监听属性
n是监听的属性当前值,o是其上一次的值,监听的属性值每次更新都会回调监听方法
总结:
1.监听的属性需要在data中声明,监听方法不需要返回值
2.监听的方法名就是监听的属性名,该属性值发生更新时就会回调监听方法
3.监听方法有两个回调参数,当前值,上一次值
解决问题:多个变量依赖一个变量
<div id="app">
<p>姓名:<input type="text" v-model="full_name"></p>
<p>姓:{{ first_name }}</p>
<p>名:{{ last_name }}</p>
</div>
new Vue({
el: '#app',
data: {
full_name: '',
first_name: '未知',
last_name: '未知',
},
watch: {
full_name(n, o) {
name_arr = n.split('');
this.first_name = name_arr[0];
this.last_name = name_arr[1];
},
}
})
12.分隔符(了解)
在正常的前端页面中使用的模板语法与vue渲染使用的语法有冲突,为了区分,使用以下方法进行区分
{{ msg }} # 正常的div页面
[{ msg }] # vue实例的页面中使用
13.其他总结
# 定义对象的四种方式
var a = 10 # 外界不能直接访问,可以被重新定义,只能在局部使用,
let b = 20 # 外界不能直接访问,只能定义一次,不能被重新定义,且具备块级作用域,只能在大括号中使用
const c = 30 # 外界不能直接访问,常量,不能修改,只能定义一次,不能被重新定义,且具备块级作用域,只能在大括号内使用
直接写 d = 40 # 直接写的是全局变量,可以在全局中使用
# 对象中的方法可以简写
let obj = {
eat(food){} # 方法 # ES6方法
}
# 定义一个函数
1. function f(){}
2. let f2 = function(){}
# 箭头函数
let f3 = () => {}
# 如果箭头函数没有函数体,只有返回值
let f4 = (n1,n2) => n1 + n2
# 如果箭头函数参数列表只有一个,可以省略
let f5 = num => num * 10
# 重点: function,箭头函数,方法都具有本质区别
# 1.箭头函数中是没有this,会直接指向windows,function,方法有
# 文本取消选中
{user-select:none}
--------------------------------------
Vue中的实例成员
v el 挂载点
data:{} 存放数据
methods:{} 定义函数,方法
delimiters:[] 分隔符
filters:{} 过滤器
computed:{} 计算
watch:{} 监听
props:[ ] 父传子传值,通过字符串获取标签中属性变量对应的值
--------------------------------------------
Vue中的指令
# 属性指令
v-bind:属性名=变量名 或 :属性名=变量名
# 事件指令
v-on:时间名=变量名 或 @事件名=变量名
# 文本指令
{{ }}
v-text
v-html
v-once
# 表单指令
v-model=变量名
# 条件指令
v-show
v-if v-else-if v-else
# 循环指令
v-for
------------------------------------------
关于vue重点 $ 使用
# 自定义事件调用
this.$emit('自定义的事件名','需要传入的参数')
# router的逻辑跳转
this.$router.push('跳转的路径')
# router返回前进操作
this.$router.go(-1) 负为后退,正为前进
14.冒泡排序
<script>
new Vue({
el: '#app',
data: {
}
})
</script>
<script>
# 例1 将数组中的值进行排列
let arr = [3, 2, 5, 4, 1];
for (let i = 0; i < arr.length - 1; i++) { // 外层循环控制趟数
for (let j = 0; j < arr.length - 1 - i; j++) { // 内存循环控制比较次数
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
# 例2 按照分数来进行排列
stus = [
{
name: 'Bob',
grade: 98
},
{
name: 'Tom',
grade: 87
},
{
name: 'Jerry',
grade: 92
},
];
// 按照分数进行排名
for (let i=0; i<stus.length-1; i++) {
for (let j=0; j<stus.length-1-i; j++) {
// 处理条件即可
if (stus[j].grade > stus[j + 1].grade) {
let temp = stus[j];
stus[j] = stus[j + 1];
stus[j + 1] = temp;
}
}
}
console.log(stus);
</script>
属性名与变量名相同可以简写,省略值
data:{
scores:score ==> score
}
for (e in scores)
for in 是取值的关键,拿到的是k,或者索引号
for of 遍历的是值
前端对字典进行操作是
添加值:字典名.k = value
取值:字典名.k
Vue --- 基础指令的更多相关文章
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch
回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...
- Vue 基础指令学习
学习Vue的一些总结,第一次写博客,文笔实在是很差 不过我会不断写的. <template> <!--只能有一个根节点 --> <div> <pre> ...
- 1 --- Vue 基础指令
1.vue 指令 1.v-model 主要在表单中使用,文本框.teaxare.单选.下拉 等 2.v-text 文本渲染 类似{{}} 3.v-show 控制Dom显示隐藏 displ ...
- vue基础指令了解补充及组件介绍
v-once指令 """ v-once:单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) """ <di ...
- vue基础指令了解
Vue了解 """ vue框架 vue是前台框架:Angular.React.Vue vue:结合其他框架优点.轻量级.中文API.数据驱动.双向绑定.MVVM设计模式. ...
- vue基础指令学习
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue基础指令集锦
v-model双向绑定数据 <input type="text" v-model="msg"> {{msg}} ###v-on 事件 <div ...
- vue基础指令
- vue 基础-->进阶 教程(2): 指令、组件
第二章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
随机推荐
- SQL Server 2000~2017补丁包
最新更新 Product Version Latest Service Pack Latest GDR Update Latest Cumulative Update CU Release Date ...
- Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'xxxxx.Controllers.xxxxController'.
Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activa ...
- php开发工程师都需要掌握什么技能呢?
PHP原生标准库精通,三种大型框架中熟练掌握一门的开发(Symfony2.Yii.ZF2),小型框架中(Codeigniter 等)通读其一源码. MySQL语句精通,实践构造 1000 万级的数据库 ...
- NOI2019:Stay at Home
7.16 NOI D1 从同步赛开始更起好了 先看了一圈题目,发现T1非常可做,二次函数因为对称轴在\(x < 0\)的地方所以有跟一次函数类似的单调性,搞个单调队列维护一下似乎就可以了.大力码 ...
- Calico网络模型
由于两台物理机的容器网段不同,我们完全可以将两台物理机配置成为路由器,并按照容器的网段配置路由表. 在物理机A中,我们可以这样配置:要想访问网段172.17.9.0/24,下一跳是192.168.10 ...
- 2019 盛趣游戏java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.盛趣游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了盛趣游戏,入职一年时间了,也成为了面 ...
- crunch制作字典
安装 安装crunch sudo apt-get install crunch 语法 crunch <min> max<max> <characterset> -t ...
- mouseover和mouseenter两个事件的区别
mouseover(鼠标覆盖) mouseenter(鼠标进入) 二者的本质区别在于,mouseenter不会冒泡,简单的说,它不会被它本身的子元素的状态影响到.但是mouseover就会被它的子元素 ...
- 基于RBAC模型的权限设计:如何设计系统权限体系?
一.什么是RABC RBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念.取消了用户和权限的直接关联,改为通过用户关联角色.角色关联权限的方法来间接地赋予用户权限(如下图),从而 ...
- Java多线程 常见问题整理
线程 什么是线程 线程是指程序在执行过程中,能够执行程序代码的一个执行单元. 线程和进程的区别 线程:一段程序执行过程中的一个执行单元,各个线程之间共享程序的内存空间以及一些进程级的资源,各线程拥有自 ...