经常使用                                     v-bind;v-for,v-model  

二、本地应用

用vue的方式来开发常见的网页效果。

(一)、内容绑定,事件绑定

1、插值表达式{{}}

{{}}可以在改变部分内容时用,不会解析标签

2、v-text

设置标签的文本值,它同{{}}一样可以改变文本内容。但是不同的是它将直接替换标签的innerText 。  innerText(不标准)和innerHtml  的含义 JavaScript (二)( DOM(元素的操作),BOM(windows对象的常见事件),PC 端网页特效异度(动画函数...) )_白灵一的博客-CSDN博客

3、v-html

设置标签的innerhtml,有HTML结构的text将被解析出来

<div id="app"><!-- 插值表达式  {{}} --><h2> {{ message+'!' }}nihao</h2><h2 v-text="message+'!'">nihao</h2><p v-text="content">nihao</p><p v-html="content">nihao</p><p>{{content}}</p></div><script>var app = new Vue({el: '#app',data: {message: 'hello world',content: "<a href='http://www.baidu.com'>去百度</a>",}})</script>

4、v-on

为元素绑定事件,v-on:click/mouseenter/dblclick或者简写@click/mouseenter/dblclick="定义的事件"

<div id="app">  <input type="button" value="单击事件" v-on:click="doIt" /><input type="button" value="双击事件" @dblclick="doIt" /><p @mouseenter="changesong">{{ song }}</p></div>var app = new Vue({el: '#app',data: {song: "樱花草"},methods: {doIt: function () {alert('做IT');},changesong: function () {this.song += "nice";},},})

例题:计数器

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><div id="app"><!-- 计数器功能实现 --><div class="input-num"><button @click="mult_counter">-</button><span>{{counter}}</span><button @click="add_counter">+</button></div></div><script src = './js/vue.js'></script><script>var app = new Vue({el: '#app',data: {counter: 1,},methods: {add_counter: function () {if (this.counter < 10) {this.counter += 1;}else{alert('数量不可以超过10');}},mult_counter: function () {if (this.counter > 1) {this.counter -= 1}else{alert('数量不可以小于1')}},},})</script></body>
</html>

(二)、显示切换(条件渲染),属性绑定

1、v-show

表达式的真假(解析值为bool值即可),切换元素的显示和隐藏(原理:修改display

2、v-if

v-if 同v-show但是它的原理是直接操作dom数   (直接删除标签)

还有     :      v-eles-if         v-else

使用 template 不用 div 的原因是 template 可以起到作用将下面的标签框起来的作用,但是后面会自动将其去掉。不想div 一样一直存在!

3、*v-bind

设置元素的属性的值(将属性的值设在methods或者data中)(属性内容置为空)

v-bind:scr/class等简写:src/class

v-bind 关注的是属性的值, 所有当其值是数字或者表达式等都会以相应的格式展示出来。而不是字符串!

例题:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.active{border: 4px solid red;}</style></head><body><div id="app"><button v-show="19>17">取消v-show</button><!-- 点击图片添加样式 --><img :src="data:imageSrc" :title="imageTitle+'!'" :class="{active:isActive}" @click="toggleActive"/><button v-if="!isshow">取消v-if</button></div><script src="./js/vue.js"></script><script>var app = new Vue({el:"#app", //#指id选择器data:{isshow:false,imageSrc:"./shitang/zhengjiao.png",imageTitle:"蒸饺",isActive:true,},methods:{toggleActive:function(){this.isActive =!this.isActive;}}})</script></body>
</html>

v-bind 的用途:

1、可以动态绑定class 属性

给class加上v-bind ,可以动态的决定绑定哪一个属性。

此处通过点击按钮来取反,动态的改变class 的取值

2、可以动态的更新属性,使用于一些需要动态的更新的data,或者methods等。此外使用它后可以被解析为表达式而不单单的字符串!!!

(1)、全部为true时:

(2)、全部为false时:

注意:

<!-- 点击图片添加样式 -->

<!-- 用v-bind 给src和class 属性设值 class的值为isActive,这里{active:isActive}中的:不是v-bind -->

<img v-bind:src="data:imageSrc" title="蒸饺!" :class="{active:isActive}" @click="toggleActive"/>

(三)、列表循环,事件修改符,表单元素绑定

1、v-for

根据数据生成列表结构 (item,index) in 数据 (item,index名字可以自由改动),

数据 :可以是  数组(常用),对象,字符串,次数

当只有一个参数是,指的是 项,在本例中是item;

当有两个参数是,第一个指的是 项,第二个指的是索引;

没有三个或者三个以上的 参数。

对比(Diff)算法 :

当 key值对比发现与初始的一致,则顺延向后对比,如果与之前的内容一致,则使用之前内容,反之如果与之前的不一致,则用新的内容, 相互比较直至下一个key ;

当 key值与之前的key 不一样 就用新的,之后一直到下一个key 对比,该过程中间的 所有内容都不再对比  直接用新的!

不写默认将key值用  索引 代替。

key作用:  增加了节点的复用率,提高了效率

1、列表过滤  (常用计算属性)

计算属性  和   监听属性   实现列表过滤

filter(p) 方法  指的是  将p中的 符合方法里面条件 的一些内容过滤掉,返回符合条件的内容。

 

2、列表排序

先筛选,再排序sort

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>列表排列</title><script src="./js/vue.js"></script></head><body><div id="app"><input placeholder="输入姓名" v-model="keyWord"><button @click="sortType=2">年龄升序</button><button @click="sortType=1">年龄降序</button><button @click="sortType=0">原顺序</button><ul><li v-for="(item,index) in filPersons">{{item.name}} - {{item.age}}</li></ul></div><script>new Vue({el: '#app',data: {keyWord: '',persons: [{ id: '1', name: 'LiMing', age: 18 },{ id: '2', name: '李华', age: 28 },{ id: '3', name: '王华', age: 19 },{ id: '3', name: '小李', age: 20 },],sortType: 0,  // 0原序列,1降序 2升序},computed: {filPersons() {// 先过滤const arr = this.persons.filter((p) => {return p.name.indexOf(this.keyWord) != -1;})// 再排序if (this.sortType) {// 这里 a,b 指的是 arr中的两个元素arr.sort((a, b) => {if (this.sortType === 1)return b.age - a.age;  //降序elsereturn a.age -b.age;  //升序})}return arr;},}})</script>
</body></html>

2、v-on

补充 传递自由参数,事件修改符(事件的后面跟上.修饰符可以对事件进行限制,如.enter回车触发)  如:@keyup.enter="sayHai"  当enter键触发 事件鼠标弹起时 触发 函数sayhai();

事件修饰符:

修饰符可以联合使用

按键修饰符:

1、

2、

key 和 keyCode 不一样,两个组合的键 需要 分别小写且 用 ' - ' 来连接

3、

4、

3、v-model

获取和设置表单元素(如输入框等)的值(双向数据绑定)(获取后的值和设定的值实现了同步)

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Temole3</title></head><body><div id="app"><input type="button" value="添加数据" @click="add" /><input type="button" value="删除数据" @click="remove" /><ul><li v-for="(item,index) in arr" >{{index+1}}. 数字有:{{item}}</li></ul><h2 v-for="(item,index) in objArr" >名字有:{{item.name}}</h2><!-- 点击下传递的参数显示在控制台   --><input type="button" value="点击" @click="change('李明','王华')" /><!--text:输入框; keyup:键盘事件,默认每输入一个触发一次;enter:回车时触发 --><input type="text" @keyup.enter="sayHai"><!-- message的值和输入框里的值实现了同步 提示框中显示修改后的message值 --><input type="text" v-model="message" @keyup.enter="getM"></div><script src="./js/vue.js"></script><script>var app = new Vue({el: '#app',data: {message:"警告",arr: [1, 2, 3],objArr: [{ name: 'jack' }, { name: 'liMing' }],},methods: {add: function () {this.objArr.push({ name: '李华' })},remove: function () {this.objArr.shift()},change:function(p1,p2){// 显示在控制台  console.log(p1,p2);},sayHai:function(){alert("你好");},getM:function(){alert(this.message);}},})</script></body>
</html>

(1)、v-for 列表循环展示数字

(2)、v-on 事件修饰  @keyup.enter="sayHai"

(3)、v-model 表单元素双向绑定,可以这表单赋值,也可以将表单值取出来

4、v-cloak 指令

解决网速慢时,vue 没有解析成功,页面上出现 一些没有引入vue 的一些情况,如:{{}}

5、v-once 指令

获取初始值

6、 v-pre 指令

vue跳过不编译,提高了效率

7、自定义 指令

调用的时间:  1、指令与元素成功绑定(自定义成功)2、指令所在的 模板 被从新解析时。

1、函数式的

写在Vue 实例里

directives:{big(element,binding){element.style.color = 'red';element.innerText = binding.value * 10;}}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>自定义指令</title><script src="./js/vue.js"></script></head>
<body><div id="root">数字n: <h1 v-text="n"></h1>数字n变红: <h1 v-big="n"></h1><br/><button @click="n++">n自增</button></div><script>new Vue({el:'#root',data:{n:1,},// 自定义指令-函数式 调用的时间:  1、指令与元素成功绑定(自定义成功) // 2、指令所在的 模板 被从新解析时。// 这里自定义指令时 取v-changeRabig 时不能定义directive ?directives:{big(element,binding){element.style.color = 'red';element.innerText = binding.value * 10;}}})</script></body>
</html>

2、对象式的

获取焦点,拿父元素等; 此时函数式的不能满足条件,需要对象式的

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>自定义指令</title><script src="./js/vue.js"></script></head>
<body><div id="root"><!-- 第一次刷新页面时 输入框自动聚焦 -->获取n: <h1 v-text="n"></h1><button @click="n++" >n自增</button><br><input type="text" v-fbind="n"></div><script>new Vue({el:'#root',data:{n:1,},directives:{// 自定义指令-对象式,里面常用的三种方法 bind、inserted、update 它们都有两种参数// 函数式 里面 没有 inserted() fbind:{// 指令与元素成功绑定时调用bind(element,binding){element.value = binding.value;console.log("bind...")},// 指令所在元素被插入页面时调用inserted(element,binding){element.focus();console.log("指令所在元素被插入页面")},// 指令所在模板被重新解析update(element,binding) {element.value = binding.value;console.log("指令所在模板被重新解析")},}}})</script></body>
</html>

二,本地应用(v-text,v-html,v-on;v-show,v-if,*v-bind;v-for,v-model;v-cloak ;v-once; v-pre ;自定义 指令)相关推荐

  1. 二、Vue(发送AJAX请求、Vue生命周期、计算属性、属性和方法、自定义指令、过渡(动画))

    一. 发送AJAX请求 1. 简介     vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现     axios是一个基于Promise的HTTP请求客户端,用 ...

  2. vue笔记(二)Vue-class与style、事件、计算属性、数据监听、指令+自定义指令、过滤器

    vue官网 一 .class.style操作 二.事件 三.计算属性 四.数据监听.观测 五.指令+自定义指令 六.过滤器 一 .class.style操作 官网 1. class使用: (1)v-b ...

  3. Vue3 高级语法(二)—— 自定义指令、Teleport、Vue插件

    一.认识自定义指令 在Vue的模板语法中我们学习过各种各样的指令:v-show.v-for.v-model等等,除了使用这些指令之外,Vue也允许我们来自定义自己的指令. 注意:在Vue中,代码的复用 ...

  4. todo谷粒商城二本地虚拟机环境搭建及项目初始化

    todo 模块依赖的版本可能有变化,等项目稳定回来确认一下 VirtualBox VirtualBox相对VMware来说是轻量级的虚拟软件, 最关键的是VirtualBox是开源免费的. 使用之前要 ...

  5. 小程序学习记录(二)——view、text、image标签、flex布局

    距离上一篇博客已经过去有小半个月时间了,这期间我为了一个工作机会赶出了几个项目.四处奔波面试.不断学习,修改简历等.这些会在这两天整理一下以博客的形式记录下来.本篇博客继续我们的小程序学习记录,记录的 ...

  6. 关于Titan的中文整理

    原外文参考: http://s3.thinkaurelius.com/docs/titan/1.0.0/ 数据结构 有向图 一 概念     1.有向图存储->其实本质并非是一个数据库,而是基于 ...

  7. 2021前端最新面试题之价值30k的面试题

    文章目录 **一.Vue响应式原理** **二.proxy数据代理是什么** **三.计算属性和watch的区别** **四.VueX的应用场景** **五.v-for为啥要加Key** **六.虚拟 ...

  8. 机器学习笔记之深度信念网络(三)贪心逐层预训练算法

    机器学习笔记之深度信念网络--贪心逐层预训练算法 引言 回顾:深度信念网络的结构表示 回顾: RBM \text{RBM} RBM叠加思想 贪心逐层预训练算法 引言 上一节介绍了深度信念网络模型的构建 ...

  9. 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换...

    背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换 原文:背水一战 Windows 10 ...

最新文章

  1. 20162309单步追踪数组及查找课下补分博客
  2. python的try和except_python的try...except
  3. Query String Object 2.1.7
  4. UNITY ET 框架
  5. 截取字符串,但要保证汉字不被截取半个
  6. gcc交叉编译的实现
  7. iphone备忘录突然没了_为什么用过iPhone的人都不再想换回安卓?网友:过于真实,哭了...
  8. 【Python 每天进步一点点】昨天把接口自动化测试框架部署在 测试环境 Linux 上,并且加入持续集成 Jenkins...
  9. Android表格布局之设置边框
  10. java 字符串排序_Java控制台输入字符串及字符串比较
  11. Excel单元格格式选择货币格式US$时变成US$¥
  12. springcloud eureka集群_SpringCloud入门学习之Eureka
  13. C语言 - 判断素数的函数
  14. 老毛子 K2 通过SSH 抓包
  15. 步进电机c语言驱动原理,连接PC的步进电机简单驱动电路
  16. vba python 基金历史排名_历史数据揭秘:跟着业绩排名买基金靠谱吗?
  17. 云服务器对比虚拟主机,云服务器对比虚拟主机
  18. 鸿蒙之下分城如果建设,率土之滨:分城数量不再限制,戍城、金虎台、拜将台让战斗更激烈...
  19. Windows去掉文件名的括号
  20. linux 电源管理源码分析,Linux 3.8.1 电源管理之OMAP Voltage Domain分析

热门文章

  1. 李宏毅机器学习Day03之误差
  2. LeetCode热题100道
  3. 什么模式才是安防渠道商们的未来?
  4. PLC低频测速(T法测速)
  5. 盆栽的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. C# 判断网络是否ping通
  7. limbo运行veket linux,Veket——『350M』的操作系统,五脏俱全全到可怕!
  8. Linux clock子系统【3】-i2c控制器打开时钟的流程分析(devm_clk_get)(consumer侧)
  9. 基于51单片机的波形发生器设计(proteus仿真波幅周期可调)
  10. SRTM、ASTER、ALOS、TanDEM-X等常用免费数字高程模型(DEM)基本信息汇总