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


Posted in Javascript onSeptember 06, 2017

混合是什么

混合 (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>

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

Javascript 相关文章推荐
JS仿flash上传头像效果实现代码
Jul 18 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
Jan 13 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
JavaScript中的slice()方法使用详解
Jun 06 Javascript
jQuery实现平滑滚动的标签分栏切换效果
Aug 28 Javascript
jQuery实现底部浮动窗口效果
Sep 07 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
Dec 13 Javascript
Vue中如何实现轮播图的示例代码
Jul 27 Javascript
label+input实现按钮开关切换效果的实例
Aug 16 Javascript
使用javaScript实现鼠标拖拽事件
Apr 03 Javascript
Vue 实现双向绑定的四种方法
Mar 16 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
Jul 05 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
Sep 06 #Javascript
vue mixins组件复用的几种方式(小结)
Sep 06 #Javascript
JavaScript 中Date对象的格式化代码方法汇总
Sep 06 #Javascript
jquery实现限制textarea输入字数的方法
Sep 06 #jQuery
Vue的百度地图插件尝试使用
Sep 06 #Javascript
表格展示利器 Bootstrap Table实例代码
Sep 06 #Javascript
javascript如何用递归写一个简单的树形结构示例
Sep 06 #Javascript
You might like
PHP制作万年历
2015/01/07 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
wxpython 学习笔记 第一天
2009/03/16 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
Django权限设置及验证方式
2020/05/13 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
Numpy数组的广播机制的实现
2020/11/03 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
公司总经理工作职责管理办法
2014/02/28 职场文书
小学生新年寄语
2014/04/03 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
小学见习报告
2015/06/23 职场文书
签约仪式致辞
2015/07/30 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
在python中实现导入一个需要传参的模块
2021/05/12 Python