从零开始学 Web 之 Vue.js(二)过滤器,按键修饰符,自定义指令

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/ 在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一、品牌管理案例 如下图, 1、实现输入id和name后,点击add按钮,添加到table中; 2、点击数据的del,可以删除这条数据。 代码: Document
{{item.id}} {{item.name}} {{item.ctime}} del
注意: 1、事件名后面可以加括号(@click="addClick" 等价于 @click="addClick() ,这样写的话,就可以传参。) 1、增加搜索需求 在Query中输入字符串,如果name项中包括Query中的字符串,则显示。 分析: 如果要满足条件才显示相关行,那么 中的list就是一个可变的。这里我们使用一个函数,函数里面进行判断是否包含Query中的字符串,然后将包含的拷贝到新数组中,填充到list的位置: methods: { addClick() { //... }, delClick(id) { //... }, // 添加的用于判断的函数 search(keywords) { // 定义新数组保存符合条件的项 let newList = []; this.list.forEach((item, index) => { // 包含则返回true if (item.name.includes(keywords)) { newList.push(item); } }); return newList; } } 二、过滤器 vue 允许自定义过滤器,可被用作一些常见的文本格式化。 过滤器只能用在两个地方:插值表达式和 v-bind表达式 。 1、全局过滤器 基本用法:

{{msg | msgFormat}}

1、使用 Vue.filter(); 来定义一个过滤器。 2、第一个参数:过滤器函数名称;第二个参数:过滤器函数体 3、过滤器的参数就是管道符的前面待处理的字符串。 插值表达式里的过滤器函数可以带参数: 相应的,在 Vue.filter('msgFormat', (data, arg1,arg2,...) 中msgFormat 的参数从第二位开始放置。 可以带多个参数。

{{msg | msgFormat('is a boy', 'and good')}}

使用全局过滤器格式化品牌管理案例的 ctime: {{item.ctime | ctimeFormat}} ... // ctime 过滤器 Vue.filter('ctimeFormat', (data) => { let time = new Date(data); let year = time.getFullYear(); let month = time.getMonth() + 1; let day = time.getDate(); let hour = time.getHours(); let minute = time.getMinutes(); return `${year}-${month}-${day} ${hour}:${minute}`; }); 2、私有过滤器 全局过滤器就是如果有多个vm实例的话,所有的VM实例都可以使用。 全局过滤器书写在 script直接标签下。 而私有过滤器书写在VM对象中: 注意:过滤器的调用原则是就近原则,即先调用私有过滤器再调用全局过滤器。 padStart和padEnd // ctime 过滤器 Vue.filter('ctimeFormat', (data) => { let time = new Date(data); let year = time.getFullYear(); let month = (time.getMonth() + 1).toString().padStart(2, '0'); let day = (time.getDate()).toString().padStart(2, '0'); let hour = (time.getHours()).toString().padStart(2, '0'); let minute = (time.getMinutes()).toString().padStart(2, '0'); let second = (time.getSeconds()).toString().padStart(2, '0'); return `${year}-${month}-${day} ${hour}:${minute}:${second}`; }); 使用ES6中的字符串新方法 String.prototype.padStart(maxLength, fillString='') 或 String.prototype.padEnd(maxLength, fillString='')来填充字符串; padStart:从开头填充 padEnd:从结尾填充 maxLength:填充后最大的长度 fillString:需要填充的字符串(fillString='',不填则以空字符填充) 三、按键修饰符 我们现在有个需求就是输入ID和name后不点击add按钮,而是按下回车键也需要添加到列表中。 我们可以在name输入框中加入按键抬起事件,并且指定是enter键抬起时才触发。
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信