nimble-ui
Version:
72 lines (69 loc) • 2.23 kB
JavaScript
import { ClassProxy, callFn } from 'nimble-lib';
import Service from '../services';
/**
* 代理address
*
* @export
* @param {*} Vue Vue
* @param {*} options 配置参数
* @returns {Picker}
*/
function addressFactory (Vue, options) {
let _classProxy = new ClassProxy();
class PickerProxy extends Service {
name = 'Address';
constructor(vue, opts) {
super(vue, opts);
let _that = this;
_classProxy.proxyHook(_that, () => {
return _that.preload();
}, [
'getDefault',
'select',
'getAddresses',
'setDefault',
'deleteAddress',
'getRegionName',
'addOrEditAddress'
], [
'$emit',
'$on'
]);
}
preload() {
let _that = this;
let res = _classProxy.initProxy(() => {
return new Promise((resolve, reject) => {
import(/* webpackChunkName: "_address_" */ './core/address').then((back) => {
let Address = back && back.default;
let _res = Address(Vue, options);
if (_that._callInstall instanceof Function) {
_that._callInstall((...args) => {
_res._getParent = () => {
return _that._getParent();
};
_res.install(...args);
});
}
resolve(_res);
}, reject);
});
}, 'preload')();
_that.preload = () => {
return res;
};
return res;
}
install(vue, opts) {
super.install(vue, opts);
this._callInstall = function(cb) {
callFn(cb, [vue, opts]);
};
}
}
return new PickerProxy(Vue, options);
}
addressFactory.install = (Vue, options) => {
Vue.use(addressFactory(Vue, options), options);
};
export default addressFactory;