@caxa-form/core
Version:
vue动态表单,助你轻松搞定表单|form-create is a form generation component that can generate dynamic rendering, data collection, verification and submission functions through JSON. Supports 3 UI frameworks, and supports the generation of any Vue components. Built-in 20
86 lines (78 loc) • 1.94 kB
JavaScript
import Api from '../frame/api';
import Render from '../render';
import extend from '@caxa-form/utils/lib/extend';
import {funcProxy} from '../frame/util';
import useInject from './inject';
import usePage from './page';
import useRender from './render';
import useLoader from './loader';
import useInput from './input';
import useHelper from './helper';
import useContext from './context';
import useLifecycle from './lifecycle';
import useEffect from './effect';
export default function Handler(fc) {
extend(this, {
fc,
vm: fc.vm,
watching: false,
loading: false,
reloading: false,
noWatchFn: null,
deferSyncFn: null,
isMounted: false,
formData: {},
subForm: {},
form: {},
appendData: {},
providers: {},
cycleLoad: null,
loadedId: 1,
nextTick: null,
changeStatus: false,
pageEnd: true,
nextReload: () => {
this.lifecycle('reload');
}
});
funcProxy(this, {
options() {
return fc.options;
},
bus() {
return fc.bus;
},
})
this.initData(fc.rules);
this.$manager = new fc.manager(this);
this.$render = new Render(this);
this.api = fc.extendApi(Api(this), this);
}
extend(Handler.prototype, {
initData(rules) {
extend(this, {
fieldCtx: {},
ctxs: {},
nameCtx: {},
sort: [],
rules,
repeatRule: [],
});
useHelper(rules);
},
init() {
this.useProvider();
this.usePage();
this.loadRule();
this.$manager.__init();
this.vm.$set(this.vm, 'formData', this.formData);
},
})
useInject(Handler);
usePage(Handler);
useRender(Handler);
useLoader(Handler);
useInput(Handler);
useContext(Handler);
useLifecycle(Handler);
useEffect(Handler);