详解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 相关文章推荐
javascript 添加和移除函数的通用方法
Oct 20 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
Oct 16 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
Jan 24 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
Oct 17 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
javascript解决小数的加减乘除精度丢失的方案
May 31 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
Jul 08 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
纯JS实现轮播图
Feb 22 Javascript
ionic2打包android时gradle无法下载的解决方法
Apr 05 Javascript
JavaScript 有用的代码片段和 trick
Feb 22 Javascript
Node.js API详解之 querystring用法实例分析
Apr 29 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设计模式 Observer(观察者模式)
2011/06/26 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
javascript实现日历效果
2019/06/17 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
python生成随机图形验证码详解
2017/11/08 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
自我鉴定范文300字
2013/10/01 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书