详解Vue.js组件可复用性的混合(mixin)方式和自定义指令

 更新时间:2017年09月06日 09:37:57   作者:Smallmotor  
本篇文章主要介绍了详解Vue.js组件可复用性的混合(mixin)方式和自定义指令,具有一定的参考价值,有兴趣的可以了解一下

混合是什么

混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。

例如:

var tpl1={
  template:'#stpl1',
  data:function(){
    return {msg:false}
  },
  methods:{
    msgf:function(){
      this.msg=!this.msg
    }
  }
}
var tpl2={
  template:'#stpl2',
  data:function(){
    return {msg:false}
  },
  methods:{
    show:function(){
      this.msg=true
    },
    hide:function(){
      this.msg=false
    }
  }
}
new Vue({
  el:'#box',
  components:{
    tpla:tpl1,
    tplb:tpl2,
  }
})

我们会发现,两个组件中的数据大多数相同,这是我们可以将它们进行混合

// 首先,定义一个混合对象
var mymixin = {
  data:function(){
    return {msg:false}
  },
  methods:{
    show:function(){
      this.msg=true
    },
    hide:function(){
      this.msg=false
    },
    msgf:function(){
      this.msg=!this.msg
    }
  }
}
var tpl1={
  template:'#stpl1',
  minins:[mymixin]
}
var tpl2={
  template:'#stpl2',
  minins:[mymixin]
}
// 如果我们需要在第一个组件定义data为true时,我们可以直接在组件内定义,他会覆盖mixin的data
var tpl1={
  template:'#stpl1',
  minins:[mymixin],
  data:function(){
    msg:true
  }
}

自定义指令

除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令。注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件——然而,有的情况下,你仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令。

// 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
 // 当绑定元素插入到 DOM 中。
 inserted: function (el) {
  // 聚焦元素
  el.focus()
 }
})

也可以注册局部指令,组件中接受一个 directives 的选项:

directives: {
 focus: {
  // 指令的定义---
 }
}

然后你可以在模板中任何元素上使用新的 v-focus 属性:

<input v-focus>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Vue集成three.js并加载glb、gltf、FBX、json模型的场景分析

    Vue集成three.js并加载glb、gltf、FBX、json模型的场景分析

    这篇文章主要介绍了Vue集成three.js,并加载glb、gltf、FBX、json模型,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • 强大Vue.js组件浅析

    强大Vue.js组件浅析

    这篇文章主要为大家介绍了Vue.js组件,组件是Vue.js最强大的功能之一,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • vue登录路由权限管理的项目实践

    vue登录路由权限管理的项目实践

    在开发Web应用程序时,常常需要进行登录验证和权限管理,本文主要介绍了vue登录路由权限管理的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Vue页面内公共的多类型附件图片上传区域并适用折叠面板(示例代码)

    Vue页面内公共的多类型附件图片上传区域并适用折叠面板(示例代码)

    本文中实现的附件上传区域支持超多类型附件分类型上传,并且可根据特定条件具体展示某些类型的附件上传,本文给大家分享Vue页面内公共的多类型附件图片上传区域并适用折叠面板的示例代码,需要的朋友参考下吧
    2021-12-12
  • Vue父组件调用子组件事件方法

    Vue父组件调用子组件事件方法

    下面小编就为大家分享一篇Vue父组件调用子组件事件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • vue移动端微信授权登录插件封装的实例

    vue移动端微信授权登录插件封装的实例

    今天小编就为大家分享一篇vue移动端微信授权登录插件封装的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue addRoutes路由动态加载操作

    vue addRoutes路由动态加载操作

    这篇文章主要介绍了vue addRoutes路由动态加载操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 基于Vuejs实现购物车功能

    基于Vuejs实现购物车功能

    这篇文章主要为大家详细介绍了基于Vuejs实现购物车功能的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 在Vue3中实现虚拟列表的方法示例

    在Vue3中实现虚拟列表的方法示例

    文章主要介绍在 Vue3 中实现虚拟列表的方法,包括原理和代码实现,原理是只渲染可视区域内的列表项,通过设置子数据项高度、计算可视区域、渲染可视区域、滚动监听、设置缓冲列表项等提升性能,感兴趣的小伙伴跟着小编一起来看看吧
    2025-01-01
  • 一文带你了解vite对浏览器的请求做了什么

    一文带你了解vite对浏览器的请求做了什么

    Vite是一种新型前端构建工具,能够显著提升前端开发体验,下面这篇文章主要给大家介绍了关于vite对浏览器的请求做了什么的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12

最新评论