当前位置:首页 > 日记 > 正文

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

详解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的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>

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

相关文章

jQuery读取本地的json文件 | 实例

jQuery读取本地的json文件 | 实例

文件,读取,实例,电脑软件,jQuery,最近写项目需要读取本地的json文件,然后悲催的发现前端新手的我居然不会,查查找找发现这东西并不难,但是应该是比较常用的,毕竟json太好用了!我是直接用的 jquery 实现的,但是 Ajax 也可以,不过我用的Ajax的简约版…

为什么微信扫一扫无法获取摄像头数

为什么微信扫一扫无法获取摄像头数

数据,扫一扫,摄像头,电脑软件,  当你使用微信扫码时,会出现无法获取摄像头数据,请重新打开扫一扫的提示,这些会影响到大家扫码关注、支付等问题,小编将在本文为大家提供摄像头打不开的解决办法,希望能够帮助到大家。微信扫一扫无法获取摄像头…

Word2007默认段落间距和行距如何更

Word2007默认段落间距和行距如何更

默认,行距,间距,段落,如何更改,  升级了版本之后,默认的段落间距和行距比早期版本的Word 要大,默认的段落间距超出了文字编辑。以下是小编为您带来的关于Word2007默认段落间距和行距更改,希望对您有所帮助。Word2007默认段落间距和行距更改…

JavaScript基础进阶之数组方法总结

JavaScript基础进阶之数组方法总结

推荐,数组方法,进阶,基础,电脑软件,数组常用方法总结:下面我只总结了es3中常用的数组方法,一共有11个。es5中新增的9个数组方法,后续再单独总结。1个连接数组的方法:concat()2个数组转换为字符串的方法:join()、toString()6个增删数组元素的方法:pop()、p…

Photoshop制作非常震撼的逼真3D眼

Photoshop制作非常震撼的逼真3D眼

3D,逼真,海报,眼镜,电脑软件,这张海报前后共计花费了10个小时左右,找素材花费了4个小时,合成的比较匆忙。如果你想尝试一下的话,建议先选择一个小局部进行尝试性合成,因为这次的海报合成部分太多,涉及到手绘调整的地方也不少。最终效果一、构思…

详解Webstorm 新建.vue文件支持高

详解Webstorm 新建.vue文件支持高

语法,支持,文件,详解,电脑软件,Webstorm 添加新建.vue文件功能并支持高亮vue语法和es6语法,分享给大家,具体如下:添加新建.vue文件功能①Webstorm 右上角File-Plugins 搜索vue如果没有就去下载 点击serch in repositories②点击安装vue.js③安…

ps怎么给人物添加一个爆炸背景动画

ps怎么给人物添加一个爆炸背景动画

动画效果,背景,人物,电脑软件,ps,本文主要是用时间轴来设置动画,前期把人物抠出,并用云彩滤镜渲染出烟雾效果;然后在时间轴就可以灵活设置动画,把烟雾缩小再放大就可以做出爆炸效果。最终效果。软件名称:photoshop CC 2016 64位 中文绿色精简破…

JavaScript实现计数器基础方法

JavaScript实现计数器基础方法

方法,计数器,基础,电脑软件,JavaScript,本文实例为大家分享了js实现计数器的具体代码,供大家参考,具体内容如下通过使用 JavaScript,设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。称之为计时事件。 在 JavaScritp 中使用计时事…

Photoshop制作非常有创意的拍立得

Photoshop制作非常有创意的拍立得

叠加,照片,创意,效果,电脑软件,下面为大家分享Photoshop制作非常有创意的拍立得照片散落叠加效果方法,教程真的很不错,很值得大家学习,推荐到,有需要的朋友不妨来参考一下吧!先看看效果图话不多说,开始教程1、首先我们将素材文件拖拽进PS,然后将背…

wps中怎样设置页面编码

wps中怎样设置页面编码

设置,编码,文字,方法,正文,  对于比较规范的论文,我们一般需要设置其从正文开始编码,那么,如何在wps文字中设置从正文开始编码的效果呢?下面就让小编告诉你wps文字如何设置从正文开始编码的方法,希望小编整理的资料对大家有帮助。wps文字设置…

浅谈react-native热更新react-nati

浅谈react-native热更新react-nati

集成,热更新,浅谈,电脑软件,react,主要步骤按官方文档实现,这里只记录遇到的一些小坑官方文档run-android时NDK报错前提是NDK已安装并且环境变量已设置根据报错提示在android/local.properties文件里加入ndk.dir=~/Library/Android/android-…

前端获取http状态码400的返回值实

前端获取http状态码400的返回值实

返回值,状态码,实例,电脑软件,http,如下所示:axios.get("/check_mobile_and_sent_code",{withCredentials:true,params:{mobile:formInline.mobile}}).then(res=>{ console.log(res); //if(res.result==true){ …