UNPKG

nimble-ui

Version:
72 lines (69 loc) 2.23 kB
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;