fix(AutoForm): optimize data initialization for better binding support
This commit is contained in:
parent
36f39bfa08
commit
5467cc6e29
20
dist/base.js
vendored
20
dist/base.js
vendored
@ -216,15 +216,19 @@ Component.register("AutoForm", (container) => {
|
|||||||
container.request = { method: "POST" };
|
container.request = { method: "POST" };
|
||||||
container.response = {};
|
container.response = {};
|
||||||
container.result = null;
|
container.result = null;
|
||||||
if (!container.data || !container.data.__watch) {
|
const setupData = () => {
|
||||||
container.data = NewState(container.data || {});
|
if (!container.data || !container.data.__watch) {
|
||||||
}
|
container.data = NewState(container.data || {});
|
||||||
container.data.__watch("*", () => {
|
|
||||||
if (container.inline) {
|
|
||||||
const dt = container.closest("DataTable");
|
|
||||||
if (dt && dt.refresh) dt.refresh();
|
|
||||||
}
|
}
|
||||||
});
|
container.data.__watch("*", () => {
|
||||||
|
if (container.inline) {
|
||||||
|
const dt = container.closest("DataTable");
|
||||||
|
if (dt && dt.refresh) dt.refresh();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
if (container.data) setupData();
|
||||||
|
else requestAnimationFrame(setupData);
|
||||||
container.form = $(container, "form");
|
container.form = $(container, "form");
|
||||||
container.submit = (opt = {}) => {
|
container.submit = (opt = {}) => {
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
|
|||||||
2
dist/base.min.js
vendored
2
dist/base.min.js
vendored
File diff suppressed because one or more lines are too long
23
src/form.js
23
src/form.js
@ -9,17 +9,22 @@ Component.register('AutoForm', container => {
|
|||||||
container.response = {}
|
container.response = {}
|
||||||
container.result = null
|
container.result = null
|
||||||
|
|
||||||
// 立即初始化数据代理,避免异步延迟导致 Select 等组件初始化时找不到值而重置
|
// 初始化数据代理与联动逻辑
|
||||||
if (!container.data || !container.data.__watch) {
|
const setupData = () => {
|
||||||
container.data = NewState(container.data || {})
|
if (!container.data || !container.data.__watch) {
|
||||||
|
container.data = NewState(container.data || {})
|
||||||
|
}
|
||||||
|
container.data.__watch('*', () => {
|
||||||
|
if (container.inline) {
|
||||||
|
const dt = container.closest('DataTable')
|
||||||
|
if (dt && dt.refresh) dt.refresh()
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
container.data.__watch('*', () => {
|
// 如果 data 已经存在(可能是同步绑定的),立即设置;否则延迟一帧等待属性绑定完成
|
||||||
if (container.inline) {
|
if (container.data) setupData()
|
||||||
const dt = container.closest('DataTable')
|
else requestAnimationFrame(setupData)
|
||||||
if (dt && dt.refresh) dt.refresh()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
container.form = $(container, 'form')
|
container.form = $(container, 'form')
|
||||||
container.submit = (opt = {}) => {
|
container.submit = (opt = {}) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user