34 lines
930 B
JavaScript
34 lines
930 B
JavaScript
|
import Dict from './Dict'
|
||
|
import { mergeOptions } from './DictOptions'
|
||
|
|
||
|
export default function(Vue, options) {
|
||
|
mergeOptions(options)
|
||
|
Vue.mixin({
|
||
|
data() {
|
||
|
if (this.$options.dicts === undefined || this.$options.dicts === null) {
|
||
|
return {}
|
||
|
}
|
||
|
const dict = new Dict()
|
||
|
dict.owner = this
|
||
|
return {
|
||
|
dict
|
||
|
}
|
||
|
},
|
||
|
created() {
|
||
|
if (!(this.dict instanceof Dict)) {
|
||
|
return
|
||
|
}
|
||
|
options.onCreated && options.onCreated(this.dict)
|
||
|
this.dict.init(this.$options.dicts).then(() => {
|
||
|
options.onReady && options.onReady(this.dict)
|
||
|
this.$nextTick(() => {
|
||
|
this.$emit('dictReady', this.dict)
|
||
|
if (this.$options.methods && this.$options.methods.onDictReady instanceof Function) {
|
||
|
this.$options.methods.onDictReady.call(this, this.dict)
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
},
|
||
|
})
|
||
|
}
|