1.5. 第二天 (自定指令,过滤器,生命周期函数,动画效果)

1.5.1. 删除的两种方式
1.使用some找到下标

this.lists.some((item,i) => {if (item.id == id) {this.lists.splice(i, 1)console.log(i)return true}})
2.使用findIndex
var index = this.lists.findIndex(item=>{if(item.id == id) {return true;}})
this.lists.splice(index,1);

1.5.2. 判断字符串存在的两种方式
1.使用forEach

var array = [];
this.lists.forEach(item=> {if(item.name.indexOf(keywords) != -1) {array.push(item);}
})
return array;

2.使用filter

var newlist = this.lists.filter(item => {if (item.name.includes(keywords)){return true;}
})
return newlist;

1.5.3. 过滤器
概念: Vue.js允许你自定义过滤器,可被用作-些常见的文本格式化。

过滤器可以用在两个地方: mustache插值和v-bind表达式。

过滤器应该被添加
在JavaScript表达式的尾部,由“管道"符指示;
• 全局

Vue.filter('dataFormat', function(datsStr) {内容});

• 私有
1.私有[ filters定义方式:

filters: {
dataFormat(input, pattern= "") {
var dt . new Date(input);
//获取年月日
var y = dt.getFullYear();
var m =(dt.getMonth().+1).tostring().padStart(2, '0');
var d = dt.getDate(). toString() .padStart(2,'0');
}

1.5.4. 自定义按键修饰符
你还可以通过全局 config.keyCodes 对象自定义按键修饰符别名
1.5.5. 自定义指令
简写的形式是,把第二个参数的对象改成一个函数,此函数代替了bind与update

在很多时候,你可能想在 bind 和 update 时触发相同行为,而不关心其它的钩子。比如这样写:

Vue.directive('color-swatch', function (el, binding) {el.style.backgroundColor = binding.value
})

• 全局
// 注册一个全局自定义指令 v-focus

Vue.directive('focus', {// 当被绑定的元素插入到 DOM 中时……inserted: function (el) {// 聚焦元素el.focus()}
})

//其中:参数1:指令的名称,注意,在定义的时候,指令的名称前面,不需要加v-前缀,
//但是:在调用的时候,必须在指令名称前加上v-前缀来进行调用
//参数2:是一个对象,这个对象身上,有一些指令相关的函数,这些函数可以在特定的阶段,执行相关的操作
• 局部

directives: {focus: {// 指令的定义inserted: function (el) {el.focus()}}
}

• 钩子函数

bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
inserted:被绑定元素插入父节点时调用
(仅保证父节点存在,但不一定已被插入文档中)。
update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode
更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

• 钩子函数的参数
指令钩子函数会被传入以下参数:

el:指令所绑定的元素,可以用来直接操作 DOM。
binding:一个对象,包含以下 property: name:指令名,不包括 v-
前缀。
value:指令的绑定值,例如:v-my-directive=“1 + 1” 中,绑定值为 2。
oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
expression:字符串形式的指令表达式。例如 v-my-directive=“1 + 1” 中,表达式为 “1 + 1”。
arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 “foo”。
modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true,
bar: true }。 vnode:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。
oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。

1.5.6. vue实例的生命周期
什么是生命周期:从Vue实例创建、运行、到销毁期间,总是伴随著各种各样的重件, 这些事件,统称为生命周期!
生命周期钩子:就是生命周期事件的别名而已;
• 创建期间的生命周期函数

beforeCreate :实例刚在内存中被创建出来,此时,还没有初始化好data和methods属性
created :实例已经在内存中创建OK ,此时data和methods已经创建OK ,此时还没有开始编译模板
beforeMount :此时已经完成了模板的编译,但是还没有挂载到页面中
mounted :此时,已经将编译好的模板,挂载到了页面指定的容器中显示

• 运行期间的生命周期函数

beforeUpdate :状态更新之前执行此函数,此时data中的状态值是最新的,但是界面上 显示的数据还是旧的,因为此时还没有开始重新渲染DOM节点
updated :实例更新完毕之后调用此函数,此时data中的状态值和界面上显示的数据, 都已经完成了更新,界面已经被重新渲染好了!

• 销毁期间的生命周期函数

beforeDestroy :实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed :Vue实例销毁后调用。调用后,Vue实例指示的所有东西都会解绑定,所有 的事件监听器会被移除,所有的子实例也会被销毁。

1.5.7. 动画效果
• 使用标签实现
Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡
条件渲染 (使用 v-if)
条件展示 (使用 v-show)
动态组件
组件根节点
这里是一个典型的例子:

<div id="demo"><button v-on:click="show = !show">Toggle</button><transition name="fade"><p v-if="show">hello</p></transition>
</div>
new Vue({el: '#demo',data: {show: true}
})
.fade-enter-active, .fade-leave-active {transition: opacity .5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {opacity: 0;
}

• 自定义前缀

<transition name="自定义的前缀名字">
</transition>

• 使用animate.css类库实现
• 实现小球滑动实例

<body><div id="app"><input type="button" value="快到碗里来" @click="flag= !flag" /><transition@before-enter="beforeEnter"@enter="enter"@after-enter="afterEnter"><div id="cir" v-show="flag"></div></transition></div><script type="text/javascript">var vm = new Vue({el: '#app',data: {flag: false},methods: {//动画初始位置beforeEnter(el) {el.style.transform = "translate(0, 0)"},//动画的结束位置enter(el, done) {el.offsetWidth  //出现过度动画的效果el.style.transition = 'all 2s ease'el.style.transform = "translate(150px, 450px)"done()},afterEnter(el) {this.flag = !this.flag}}});</script></body>

• 使用实现列表动画

<!--在实现列表过渡的时候,如果需要过渡的元素,是通过v-for循环渲染出来的,不能使用
transition包裹,需要使用<transition-group>
<!--如果要为v-for循环创建的元素设置动画,必须为每一个元素设置:key -->

实例

<head><meta charset="utf-8"><title>列表添加动画</title><script src="../js/vue.js" type="text/javascript" charset="utf-8"></script><style>li {margin-top: 10px;border: 1px #1B6D85 solid;}li:hover {background-color: #1B6D85;}.v-enter,.v-leave-to{opacity: 0;transform: translateY(80px);}.v-enter-active,.v-leave-active{transition: all 1s ease;}</style></head><body><div id="app"><label>id:<input type="text" v-model="id"/></label><label>name:<input type="text" v-model="name"/></label><input type="button" value="add" v-on:click="add()"/><ul><transition-group><li v-for="item in list" :key='item.id'>{{item.id}}---{{item.name}}</li></transition-group></ul></div><script type="text/javascript">var vm = new Vue({el:'#app',data:{id: '',name: '',list: [{id:1, name: '贾真琦'},{id:2, name: '科比'}]},methods:{add() {this.list.push({id: this.id, name: this.name})this.id = this.name = ''}}});</script></body>

• 指令

/* 动画开始指令 */
.v-enter,
.v-leave-to{opacity: 0;transform: translateY(80px);
}/* 动画运动指令 */
.v-enter-active,
.v-leave-active{transition: all 1s ease;
}/* 下面的. v-move 和v-leave-active配合使用,能够实现列表后续的元素,渐渐地漂上来的效果★ */
.v-move{transition: all 1s ease;
}
.v-leave-active{position: absolute;
}

transition-group的appear属性与tag属性

<!-- 通过为<transition-group>添加 appear属性时,实现页面刚出现,入场有效果,但是此时会给li标签外渲染一个span标签,有损规范 -->
<!-- 因此可以为<transition-group>指定 tag="ul",会将为<transition-group>渲染成ul标签,删除外层的ul --><transition-group appear tag="ul"><li v-for="(item,i) in list" :key='item.id' @click="del(i)">{{item.id}}---{{item.name}}</li></transition-group>

1.5.8. 方法
• padStart与padEnd
理解1:
padStart():用于头部补全。
padEnd()用于尾部补全。
一共接受两个参数,
第一个参数是用来指定字符串的长度,如果该值低于当前字符串的长度,则将按原样返回当前字符串
第二个参数是用来补全的字符串,如果此字符串太长而无法保持在目标长度内,则会截断该字符串并应用最左侧的部分,如果省略,将会用空格补全。
第一个参数用来指定字符串的最小长度,
第二个参数是用来补全的字符串。

理解2:
使用ES6中的字符串新方法String,prototype.padStart(maxLength, fllString=’ ’ )或
String.prototype.padEnd(maxLength, fllString=’ ’ )来填充字符串;

谢谢观看~

七天学完Vue之第二天学习笔记(自定指令,过滤器,生命周期函数,动画效果)相关推荐

  1. 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版)

    经过几天的学习,opencv基础部分学习完啦.整理出来. OpenCV opencv学习笔记1:图片读入,显示与保存(有代码) opencv学习笔记2:图像处理基础 opencv学习笔记3:像素处理 ...

  2. 十天学完Vue学习总结

    一.学习时间的安排 每次学习一门新语言的时候,我会习惯性创建一个文件夹,到我学完Vue基础时一共用了十天的时间.每一天几乎是一个知识点,或者是知识点对于的作业或者是项目. 二.共有多少个知识点可以学习 ...

  3. 考研:研究生考试(七天学完)之《概率与统计》研究生学霸重点知识点总结之目录(随机事件、条件概率与独立性、随机变量的函数及其分布(数字特征)、统计学、统计量与抽样分布、点估计、区间估计、假设检验

    考研:研究生考试(七天学完)之<概率与统计>研究生学霸重点知识点总结之目录(随机事件.条件概率与独立性.随机变量的函数及其分布(数字特征).统计学.统计量与抽样分布.点估计.区间估计.假设 ...

  4. 考研:研究生考试(七天学完)之《概率与统计》研究生学霸重点知识点总结之考试内容各科占比及常考知识重点梳理(随机事件和概率、一维随机变量及其分布、多维随机变量及其分布、随机变量的数字特征、大数定律和中心

    考研:研究生考试(七天学完)之<概率与统计>研究生学霸重点知识点总结之考试内容各科占比及常考知识重点梳理(随机事件和概率.一维随机变量及其分布.多维随机变量及其分布.随机变量的数字特征.大 ...

  5. DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之1: 开场白

    在开场白之前的说明: 这是"DirectX 9.0c游戏开发手记"的第一部分,叫做"'龙书'第二版学习笔记",讲的是我做"龙书"第二版(原名 ...

  6. Linux第二周学习笔记(7)

    Linux第二周学习笔记(7) 2.13 文档查看cat_more_less_head_tail (1). cat命令 cat命令:用于查看一个文件的内容并将其显示在屏幕上 cat-A命令:显示所有的 ...

  7. Linux第二周学习笔记(12)

    Linux第二周学习笔记(12) 2.18 特殊权限set_uid set_uid:这个权限是针对二进制可执行文件,使文件在执行阶段具有文件所有者的的权限. --------------------- ...

  8. 【ERP】ERP发展阶段有哪些?对ERP发展各个阶段概念的理解(20年3月29日第二章学习笔记)

    ERP发展历经五大阶段 1.ROP库存订货点法 2.MRP物料需求计划 3.闭环MRP 4.MRPII制造业资源计划 5.ERP企业资源计划 1.ROP库存订货点法 ROP,库存订货点法,很好理解,就 ...

  9. Hinton机器学习与神经网络课程的第二章学习笔记

    Hinton机器学习与神经网络课程的第二章学习笔记 该笔记为自己以后方便查阅,要是有大神感觉我的笔记有哪些地方记的有误差或者不对的话也欢迎指出 文章目录 Hinton机器学习与神经网络课程的第二章学习 ...

  10. 机电传动控制第二周学习笔记

    机电传动控制第二周学习笔记 经过第二周的学习,我了解了电机的发展历史.从奥斯特发现电生磁的现象,到法拉第电磁回转实验,再到后来的电机一步步的发展至今.它充满了巧合,但是它又必然一步步向更完美走去.电机 ...

最新文章

  1. OSChina 周一乱弹 —— 还一星期就要和女神约会了
  2. 网络营销专员浅析网络营销推广基本形式你更中意哪种?
  3. MQTT客户端工具MQTTfx
  4. 前端学习(1662):前端系列实战课程之div跟随鼠标移动
  5. Android轩辕剑之ActionBar之一
  6. 记一次spirngMVC整合HttpPrinter的过程
  7. 阵列信号处理——研究背景与现状
  8. 三菱PLC 计数器C
  9. MDIO总线介绍 |CSDN创作打卡
  10. 主成分分析法步骤matlab,主成分分析法matlab实现程序
  11. ROS Launch使用总结
  12. HTML空格符号 nbsp; ensp; emsp; 介绍以及实现中文对齐的方法
  13. 【论文阅读】GPT系列论文详解
  14. Node.js项目总结及常用技巧
  15. 有这么一种东西,员工深恶痛绝,老板们却喜爱有加
  16. 缺少配色灵感,整理超全超赞的配色工具帮你
  17. 2019最新《Android开发全套学习教程》
  18. 七夕情节人,适合给IT男朋友送什么专属礼物?
  19. Golang开发新手常犯的50个错误
  20. 检测服务器的远程端口开启和关闭状态

热门文章

  1. STM32CubeMX+Keil+Proteus实现LED接电源跑马灯
  2. python 欠采样_Python sklearn 实现过采样和欠采样
  3. 软件工程第三章(第一部分)
  4. FME将ArcGIS符号化转为CAD填充
  5. 机械制造技术基础【3】
  6. sqlmap注入命令大全
  7. 贝叶斯详细分析,详细例子解释
  8. 友华PT921G光猫实现黑群晖外网唤醒
  9. js生成java uuid_JS生成UUID 前端UUID
  10. Android可达性分析,基于时间距离的机会网络可达性分析及应用