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

品牌管理案例

在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 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。





发布了59 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41160739/article/details/103677033