vue 混入 mixin ,分发 vue 组件中重复的功能

  局部的书写格式

  // mixin.js  

  var mymixin = {   // 这是一个对象:对象里面的写法与组件里面的写法一模一样,组件该怎么写,这就怎么写

    data(){

      return {

        a:"hello world"

      }

    }

  }  

  export default mymixin  // 将对象暴露出去

  vue 中组件的写法

  import mymixin from "./mixin.js"     // 引入 mixin.js 文件

  export default {

    data(){

      b:"hello world"

    },

    mixins:[mymixin],      // mixins 的用法,值是一个数组,里面放着 mymixin 的对象

    mounted(){

      console.log(this)    // 组件实例上 data 属性上便拥有了 a 属性了,而且我们在别的组件上引入 mixin.js 的话,也会拥有 a 属性

    }

  }

  注意事项:

    我们我们组件中有 data 属性,而 mixin.js 中也有 data 属性,vue 会如何处理呢?

      数据对象递归合并(就是说:将 组件中的 data 属性,和 mixin.js 中的 data 属性,合并为一个 data 属性),那么还有一种情况,组件 data 中有一个 a 属性,mixin.js 的 data 中也有一个

    a 属性,合并的时候,就只会合并 组件中 a 属性,mixin.js 中的 a 属性,便会被抛弃

  2. 全局注入混合 mixin

  上面的例子,是局部的使用 mixin ,我们每次使用都需要引入 mixin.js 的文件,那么我们所有的组件都拥有共同的内容,那么使用全局注入 mixin 再好不过了

  使用方法:main.js 中

    Vue.mixin({  // 全局注入混合对象

      data(){

        return {

          a:"你好,世界"

        }

      }

    })

  这样我们的所有组件 data 中都会有 a 这个属性

  当然上面的例子只是以 data 为案例,我们组件中的东西都可以写在 mixin 中,只有一个条件,那就是组件中的东西相同

  

  自定义指令:Vue.directive(参数一,参数二)  // 参数一:指令的名字 不允许带 v-,参数二:对象

    案例:如 v-focus  全局注册

    Vue.directive('focus',{

      // 当被绑定的元素插入到 dom 中时

      inserted(el){

        console.log(el)  // 被绑定自定义指令的 dom 元素

        el.focus()    // 元素的自动聚焦方法

      }

    })

    参数二:对象上拥有的钩子函数

    bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置  

    inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)

    update:当组件的 VNode 更新时调用

    钩子函数的参数:

      el:指令所绑定的元素,可以用来直接操作 DOM 。

      binding:是一个对象,name 指令名,value:指令值

      expression:字符串形式的表达式

  自定义指令的使用

  <input v-focus />

  过滤器  // 对数据的处理

    标识符 | 俗称管道符

    在 vue 组件中

    局部

    <h1> {{a | upper}} <h1>    // 这样我们便得到的大写的 HELLO

    export default {

      data(){

        return {

          a:"hello"

        }

      },

      filters:{

        upper(value){

          console.log(value)  // 代表管道符前面的数据

          return value.toUpperCase()   //  必须 return 对前面数据的处理  

        }

      }

    }

    全局处理:在 main.js 中

    Vue.filter('upper', function (value) {

      return value.toUpperCase()    //  必须 return

    })

    // 这样的话所有组件都可以使用 upper 的管道符来将 字符串变大写

vue 混入 mixin,自定义指令,过滤器的更多相关文章

  1. vue教程2-07 自定义指令

    vue教程2-07 自定义指令 自定义指令: 一.属性: Vue.directive(指令名称,function(参数){ this.el -> 原生DOM元素 }); <div v-re ...

  2. Vue.js 第2章 钩子函数&自定义指令&过滤器&计算属性&侦听器

    目标 钩子函数 自定义指令 自定义过滤器 计算属性 监听属性 局部自定义指令 为什么需要自定义指令 为了复用,为了代码的灵活 指令的分类:全局指令,局部指令 在vm外面创建的指令 通过Vue.dire ...

  3. 在Vue中通过自定义指令获取元素

    vue.js 是数据绑定的框架,大部分情况下我们都不需要直接操作 DOM Element,但在某些时候,我们还是有获取DOM Element的需求的: 在 vue.js 中,获取某个DOM Eleme ...

  4. Vue API(directives) 自定义指令

    前言:除了vue的内置指令以外,我们可以定义自定义指令.内置指令表相见:https://www.cnblogs.com/ilovexiaoming/p/6840383.html 我们定义一个最简单的 ...

  5. vue视频: 自定义指令 && 拖拽 && 自定义键盘信息

    v-textv-forv-html 指令: 扩展html语法 自定义指令:1. 自定义属性指令: Vue.directive(指令名称,function(参数){ this.el -> 原生DO ...

  6. Vue.js:自定义指令

    ylbtech-Vue.js:自定义指令 1.返回顶部 1. Vue.js 自定义指令 除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令. 下面我们注册一 ...

  7. 在vue中创建自定义指令

    原文:https://dev.to/ratracegrad/creating-custom-directives-in-vue-58hh 翻译:心上有杨 指令是带有 v- 前缀的特殊属性.指令的作用是 ...

  8. 浅析vue混入(mixin)

    vue中的混入,可以在一定程度上提高代码的复用性.通俗来说,混入类似于“继承”,当前组件对象继承于组件对象,一般情况下遵循“就近原则”.但是与继承不同的是,继承一般都跟随着属性的重写与合并,混入在不同 ...

  9. Vue笔记--通过自定义指令实现按钮操作权限

    经常做中后台系统,此类系统的权限是比较重要,拿自己做过的一些项目做个笔记. Vue实现的中后台管理系统.按钮操作权限的空置一般都是通过自定义指令Vue.directive. <el-button ...

随机推荐

  1. cookie以一个或多个空格开头

    作为一个整体,如果cookie以一个或多个空格开头,请用空格替换所有空格:如果cookie以一个或多个空格结尾,请用空格替换所有空格. 象征意义: \ S:空间,空间 +一个或多个 ^开始,^s,以空 ...

  2. javascript学习方法指南

    Javascript看似无限的可能性使得基于HTML和CSS的公共网站成为过去.然而,尽管JavaScript为用户提供了出色的动态体验,但它也为开发人员创建了一个雷区.因此,Javascript搜索 ...

  3. 操作MongoDB好用的图形化工具,Robomongo -> 下载 -> 安装

    一 下载 点击下载 -> https://robomongo.org/download 二 安装 直接下一步就行了 -> 择安装位置之后 -> 确认安装

  4. pipenv虚拟环境使用方法

    1.打开cmd安装pipenv, pip install pipenv 2.新建工程目录,项目目录,然后cmd进入工程目录 基本命令: pipenv install                  ...

  5. 第五章·Logstash深入-日志收集

    1.Logstash收集单个日志到文件中 file模块收集日志 不难理解,我们的日志通常都是在日志文件中存储的,所以,当我们在使用INPUT插件时,收集日志,需要使用file模块,从文件中读取日志的内 ...

  6. 打造高效 VIM

    删除空行 删除1到10行的空行 :1,10g/^$/d 命令行快捷命令 Bang(!)命令 上一条命令:!! 使用上一条命令的所有参数:!* 使用上一条命令的最后一个参数:!$ 使用上一条命令中除了最 ...

  7. Python3.8新特性-- 海象操作符

    “理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打拼职场的老司机. 不记得没关系,只需要知道:有这么一位老司机, 穿上西装带大家打拼职场! 操起键盘带大家打磨技术! ...

  8. Scala(二)——基础语法(与Java的区分)和函数式编程

    Scala快速入门(二) 一.键盘输入 关于基本类型的运算,以及复制运算,条件运算,运算符等知识,均和Java语言一样,这里不过多叙述. val name = StdIn.readLine() Std ...

  9. C++第五次作业--运算符重载和函数重载

    C++ 运算符重载和函数重载 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是 ...

  10. 如何在GitBook中使用Git管理

    1.在GitBook中新建[Book],找到对应目录下的位置,拷贝[book]名称后删除文件夹以及文件,新建文件夹重命名为[book]名称 2.打开文件夹,在根目录下选择创建git仓库,即 git i ...