Vue中的“混合”——mixins使用方法
混合是一种灵活的分布式复用 Vue 组件的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。当组件和混合对象含有同名选项时,这些选项将以恰当的方式混合。比如,同名钩子函数将混合为一个数组,因此都将被调用
var mixin = {
created: function () {
console.log('混合对象的钩子被调用')
}
}
new Vue({
mixins: [mixin],
created: function () {
console.log('组件钩子被调用')
}
})
// -> "混合对象的钩子被调用"
// -> "组件钩子被调用"
具体用法详见:https://cn.vuejs.org/v2/guide/mixins.html
这里注意的是:
1:mixin定义的是一个对象;
2:mixin定义的对象中包含的内容,可以通过再vue中的mixins引入进去;
3:名字相同的会合并,根据这一原理,可以在不同的地方定义vue中的参数,然后合并;
4:注意的是这里并不是vue的子组件形式,子组件定义的数据,是可以直接在html中调用的,但是这里widget定义的对象,是通过mixin引入vue中的;
人才库中例子:
<div class="header">
<div class="header-content">
<div class="header-title"><a href="$homeLink" title="京东人才库"></a></div>
<div class="fr">
<div class="home">
<a href="index.html"><span class="home-icon"></span>首页</a>
<a href="javascript:;" class="total-data" v-on:click="showAll()"><span class="data-icon"></span>全部数据</a>
</div>
<div class="header-user" v-cloak>
<span class="verti-line"></span>
<a class="avatar" href="javascript:;"><img :src="imgurl"></a>
<a class="user-name" href="javascript:;">{{userinfo.userName}}</a>
<a class="resign" href="/logout">退出</a>
</div>
</div>
</div>
</div>
<div class="gradient-line"></div>
widget的(注意没有使用子组件形式<script type="text/x-template" id="xxx"></script>定义),相应的js
define(function (require, exports, module) {
var public = require('/js/common').public;
// mixins
module.exports = {
data: function () {
return {
userinfo: {}
}
},
computed: {
imgurl: function () {
return this.userinfo.imgurl ? this.userinfo.imgurl : 'http://img/dd.png';
}
},
mounted: function () {
var userinfo = public.getLoginData();
this.userinfo = userinfo;
}
}
});
这里定义的对象的字段值data、computed、mounted均是和vue的构造参数一致,方便后面的名称一致得合并;
在vue中定义:
var header =require('/widget/header/header');
new Vue({
el: '#app',
mixins: [header],//这里引入,将引入的对象和vue中的相同参数合并
data:{},
...
})
Vue中的“混合”——mixins使用方法的更多相关文章
- vue中extend/component/mixins/extends的区别
vue中extend/component/mixins/extends的区别 教你写一个vue toast弹窗组件 Vue.extend构造器的延伸
- Vue中的scoped及穿透方法
何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组 ...
- Vue中使用webpack别名的方法
在工作中,我们经常会写出这种代码: import MHeader from '../../components/m-header/m-header' @import "../../commo ...
- Vue中,过滤器的使用方法!
Vue.js允许自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和v-bind表达式.过滤器应该被添加在JavaScript表达式的尾部,由“管道”符号指示:(借官方的 ...
- Vue中的scoped及穿透方法(修改第三方组件局部的样式)
何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组 ...
- vue中操作Dom节点的方法
1.vue中ref操作dom节点 <template> <div id="app"> <div </div> <button @cl ...
- Vue中遍历数组的新方法
1.foreach foreach循环对不能使用return来停止循环 search(keyword){ var newList = [] this.urls.forEach(item =>{ ...
- vue中组件的四种方法总结
希望对大家有用 全局组件的第一种写法 html: <div id = "app"> <show></show></div> js: ...
- Vue中正确使用jQuery的方法
题主Vue小白,入门demo时想在其中使用jQuery(当然可能是不推荐的做法哈,毕竟俩儿的风格不一样,但万一你就需要呢 _^ ^_),结果遇到问题,最终倒腾解决. 编译报错:$ is undefin ...
随机推荐
- Eclipse 中 SDK无法更新---解决方法
在SDK Manager -> tools -> options中: HTTP Proxy Server: mirrors.neusoft.edu.cn HTTP Proxy Port: ...
- Failed to execute operation: No such file or directory(systemctl enable iptables.service)
在保存Iptables配置时:systemctl enable iptables.service 出现错误: Failed to execute operation: No such file or ...
- [.NET开发] C#连接MySQL的两个简单代码示例
实现代码一.使用的是mysql自带的驱动安装一下即可 这是一个简单的例子. 在这里有个问题:dataset如果没设主键的话,可能会引起一些对数库操作的问题,比如会造成updata出现错误. stati ...
- protected internal == internal
总结:在同程序集下,protected internal类型修饰的成员变量可以在基类或派生类的类内.类外访问(同程序集下protected internal和internal访问性质相同,此处保留了i ...
- 20170814xlVBA部分代号收盘价转置
原始数据: 转置效果: Sub TransformData() Dim Rng As Range Dim Arr As Variant Dim Dic As Object Dim dCode As O ...
- hdu3374 kmp+最小表示法
Give you a string with length N, you can generate N strings by left shifts. For example let consider ...
- kill word out e ef en em
1● e 2● ef 出,出来 3● en 4● em 使~进入状态,包围,进入~之中
- HDU 1710 二叉树遍历
首先.先序遍历是先访问根节点.然后左节点 然后右节点.从根节点开始 直到它的子节点没有左节点才开始回溯访问上一个节点的右节点.同理.中序遍历 先访问左节点 然后是父节点 然后是右节点.从根节点开始 直 ...
- bzoj1607
题解: 帅选法 把相同的放在一起 代码: #include<bits/stdc++.h> using namespace std; ; int n,a[N],s[N],M,ss[N]; i ...
- vue 表格导出excel
首先要install两个依赖, 1 npm install -S file-saver xlsx 2 npm install -D script-loader 在项目src目录下新建一个文件夹ven ...