首页 > 编程 > JavaScript > 正文

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

2019-11-19 15:32:25
字体:
来源:转载
供稿:网友

混合是什么

混合 (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的datavar tpl1={  template:'#stpl1',  minins:[mymixin],  data:function(){    msg:true  }}

自定义指令

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

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

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

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

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

<input v-focus>

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表