vue_mixins用法
看到过mixins但是一直没用过,后来发现他是这么用的1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35var mixin = {
created: function () {
console.log(1)
},
data(){
return {
name:"demoName"
}
}
methods:{
showName:function(){
//minxs使用实例的数据
console.log(this.showName+this.demoName);
}
}
}
var vm = new Vue({
data(){
showName:false
},
created: function () {
console.log(2)
},
methods:{
show:function(){
//调用minxins的方法
this.showName()
console.log("使用mixins的数据"+this.demoName);
}
}
mixins: [mixin]
})
// => 1
// => 2
// 当调用show方法的时候 会调用mixins里的showName方法,公用钩子函数和方法以及数据
也可以绑定全局组件,然后所有组件都可使用
1 | // src/utils/mixin.js |
1 | // main.js |
有几个页面都需要任务状态,该状态是一个对象数组。
根据需求每个用户获取的状态都是相同的,多处需要只去一处即可。
注意:全局mixin的data在每个组件上都会有的,但是要改变这个值能改的只能是自己组件的值。其父组件和子组件均为默认值1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// src/utils/mixin.js
let mixin = {
data () {
return {
mixinTaskStatus: [],
mixinUploadUrl: process.env.NODE_ENV === 'development' ? 'aaa/fileUpload' : 'bbb/fileUpload'
}
},
methods: {
mixinFetchState () {
let data={}
......
// 判断本地存储(localStorage或sessionStorage)是否存在,
// 如果存在则赋值
// 如果不存在从服务端获取数据并赋值及存储在本地
this.mixinTaskStatus = data
}
}
export default mixin
1 | // src/main.js |
具体使用:
比如我在batchSendTask页面需要使用该参数,就在该页面的mounted函数里调用该方法1
2
3mounted () {
this.mixinFetchState()
}
在页面中就可以直接只用这个值了1
2
3
4<el-option :label="item.code"
v-for="item in mixinTaskStatus"
:key="item.id"
:value="item.name"></el-option>
add in 2018-01-12 17:12:00
如果二级代码类型比较多,你就需要在全局mixin里添加多个data和多个method,
这么一个一个的写就不明智了,把相关字段做参数,只用一个method岂不更好1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20// src/utils/mixin.js
let mixin = {
data () {
return {
mixinStaticCode: {},//把所有二级代码都作为对象的属性
mixinUploadUrl: process.env.NODE_ENV === 'development' ? 'aaa/fileUpload' : 'bbb/fileUpload'
}
},
methods: {
mixinFetchStaticCode (storageName,featchUrl/featchParam,attribute) {
let data={}
......
// 判断本地存储(localStorage或sessionStorage)是否存在,
// 如果存在data则直接赋值
this.mixinStaticCode[attribute]=data;
// 如果不存在从服务端获取数据并赋值及存储在本地
this.mixinTaskStatus = data
}
}
export default mixin
在页面中就可以直接只用这个值了1
2
3
4<el-option :label="item.code"
v-for="item in mixinStaticCode.aaaa"
:key="item.id"
:value="item.name"></el-option>