欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

品牌管理案例、过滤器、自定义指令、生命周期

程序员文章站 2022-05-15 22:46:40
...

品牌管理案例

在Vue中,使用事件绑定机制,为元素指定处理函数的时候,如果加了小括号,就可以给函数传参了
在使用 v-for 指令循环每一行数据的时候,不再直接 item in list,而是 in 一个 过滤的methods 方法,同时,把过滤条件searchName传递进去:

  <tr v-for="item in search(searchName)">

search 过滤方法中,使用 数组的 filter 方法进行过滤:
indexOf(name)如果要检索的字符串值没有出现,则该方法返回 -1


search(name) {

  return this.list.filter(x => {

    return x.name.indexOf(name) != -1;

  });

}

过滤器

概念:Vue.js 允许你自定义过滤器,可被用作一些常见的文本格式化。过滤器可以用在两个地方:双花括号 插值和 v-bind 表达式。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符指示;
过滤器函数总接收表达式的值 (之前的操作链的结果) 作为第一个参数。

注意:当有局部和全局两个名称相同的过滤器时候,会以就近原则进行调用,即:局部过滤器优先于全局过滤器被调用!

     // 定义一个 Vue 全局的过滤器,名字叫做  msgFormat
    Vue.filter('msgFormat', function (msg, arg, arg2) {
      // 字符串的  replace 方法,第一个参数,除了可写一个 字符串之外,还可以定义一个正则
      return msg.replace(/单纯/g, arg + arg2)
    })
<td>{{item.ctime | dataFormat('yyyy-mm-dd')}}</td>
dataFormat(input, pattern = "") { // 在参数列表中 通过 pattern="" 来指定形参默认值,防止报错

var m = (dt.getMonth() + 1).toString().padStart(2, '0');
//toString()返回该对象的字符串表示。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

return `${y}-${m}-${d}`;
字符串拼接  '+a+'相当于${a}

键盘修饰符以及自定义键盘修饰符

  1. 通过Vue.config.keyCodes.名称 = 按键值来自定义案件修饰符的别名:

Vue.config.keyCodes.f2 = 113;

  1. 使用自定义的按键修饰符:

<input type="text" v-model="name" @keyup.f2="add">

[自定义指令]

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

一个指令定义对象可以提供如下几个钩子函数 (均为可选):
bind:只调用一次,指令第一次绑定到元素时调用。
inserted:被绑定元素插入父节点时调用

指令钩子函数会被传入以下参数:
el:指令所绑定的元素,可以用来直接操作 DOM 。在每个 函数中,第一个参数,永远是 el
binding:一个对象,包含以下属性:
name:指令名,不包括 v- 前缀。
value:指令的绑定值,例如:v-my-directive=“1 + 1” 中,绑定值为 2。
oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
expression:字符串形式的指令表达式。例如 v-my-directive=“1 + 1” 中,表达式为 “1 + 1”。
arg:传给指令的参数,可选。

    Vue.directive('focus', {
    // 自定义全局指令 v-focus,为绑定的元素自动获取焦点:

    Vue.directive('focus', {

      inserted: function (el) { // inserted 表示被绑定元素插入父节点时调用

        el.focus();

      }

    });



    // 自定义局部指令 v-color 和 v-font-weight,为绑定的元素设置指定的字体颜色 和 字体粗细:

      directives: {

        color: { // 为元素设置指定的字体颜色

          bind(el, binding) {

            el.style.color = binding.value;

          }

        },

        'font-weight': function (el, binding2) { // 自定义指令的简写形式,等同于定义了 bind 和 update 两个钩子函数

          el.style.fontWeight = binding2.value;

        }

      }

```

2. 自定义指令的使用方式:

```

<input type="text" v-model="searchName" v-focus v-color="'red'" v-font-weight="900">

```

## [vue实例的生命周期](https://cn.vuejs.org/v2/guide/instance.html#实例生命周期)
+ 什么是生命周期:从Vue实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期!
+ [生命周期钩子](https://cn.vuejs.org/v2/api/#选项-生命周期钩子):就是生命周期事件的别名而已;
+ 生命周期钩子 = 生命周期函数 = 生命周期事件
+ 主要的生命周期函数分类:
 - 创建期间的生命周期函数:
  	+ beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属性
  	+ created:实例已经在内存中创建OK,此时 data 和 methods 已经创建OK,此时还没有开始 编译模板
  	+ beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中
  	+ mounted:此时,已经将编译好的模板,挂载到了页面指定的容器中显示
 - 运行期间的生命周期函数:
 	+ beforeUpdate:状态更新之前执行此函数, 此时 data 中的状态值是最新的,但是界面上显示的 数据还是旧的,因为此时还没有开始重新渲染DOM节点
 	+ updated:实例更新完毕之后调用此函数,此时 data 中的状态值 和 界面上显示的数据,都已经完成了更新,界面已经被重新渲染好了!
 - 销毁期间的生命周期函数:
 	+ beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
 	+ destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。





相关标签: vue