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.response = {};
|
||||
container.result = null;
|
||||
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();
|
||||
const setupData = () => {
|
||||
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();
|
||||
}
|
||||
});
|
||||
};
|
||||
if (container.data) setupData();
|
||||
else requestAnimationFrame(setupData);
|
||||
container.form = $(container, "form");
|
||||
container.submit = (opt = {}) => {
|
||||
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
27
src/form.js
27
src/form.js
@ -8,18 +8,23 @@ Component.register('AutoForm', container => {
|
||||
container.request = { method: 'POST' }
|
||||
container.response = {}
|
||||
container.result = null
|
||||
|
||||
// 立即初始化数据代理,避免异步延迟导致 Select 等组件初始化时找不到值而重置
|
||||
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()
|
||||
|
||||
// 初始化数据代理与联动逻辑
|
||||
const setupData = () => {
|
||||
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()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 如果 data 已经存在(可能是同步绑定的),立即设置;否则延迟一帧等待属性绑定完成
|
||||
if (container.data) setupData()
|
||||
else requestAnimationFrame(setupData)
|
||||
|
||||
container.form = $(container, 'form')
|
||||
container.submit = (opt = {}) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user