feat(admin-table): 受控数据流转为默认,controlled:false 作为兼容逃生口

This commit is contained in:
augushong
2026-09-14 16:03:36 +00:00
parent 885b00e2d2
commit 119c601063

View File

@@ -734,10 +734,12 @@
}
// 受控表形态清单规范化须先于引擎渲染:视图切换按钮的注入条件
// (条目数>1)依赖它,受控分支直接复用。非受控表不 normalize。
// (条目数>1)依赖它,受控分支直接复用。非受控(逃生口)表不
// normalize。
var layoutEntries = [];
var mobileLayoutInjected = false;
if (options.controlled === true) {
// 受控是默认数据流,仅显式 controlled:false 的逃生口页跳过
if (options.controlled !== false) {
// 手机端未配置 layoutList 时自动启用内置 card(计划
// table-multiform-rendering Success criteria 2):内置 card
// 无需页面模板(数据全来自渲染上下文),自动注入可行。
@@ -878,13 +880,15 @@
parseData = options.parseData;
}
if (options.controlled === true) {
// 受控灰度模式:数据请求与分页职责移交 UA_TABLE_STORE,引擎只做
// 受控是默认数据流(store 取数 + 引擎纯渲染),controlled:false
// 是逃生口:依赖引擎 url 模式行为(如自定义 parseData)的下游
// 页面可显式传 controlled:false 退回。
if (options.controlled !== false) {
// 受控数据流:数据请求与分页职责移交 UA_TABLE_STORE,引擎只做
// 纯渲染(空数据起步、关闭引擎分页,由 store 的 laypage 自绘)。
// 选择态注入(rowDisableCallback / URL selectedIds / LAY_CHECKED
// 跨页回显)由 store.fetch 的 injectSelectionMarks 承接,故不装
// 引擎 parseData。默认关闭——未显式 controlled:true 的页面保持
// 引擎 url 模式,行为与历史版本完全一致。
// 引擎 parseData。
delete options.url;
delete options.parseData;
options.data = [];
@@ -947,11 +951,12 @@
// 监听表格选择器
ua.table.listenTableSelectConfirm(options);
// 受控模式接线(在共享监听挂载之后):注册 store、自建分页容器、
// 同步勾选事件、首屏取数。搜索/排序/switch/编辑等既有监听的
// table.reloadData 调用经 shim 自动分流到 store.reload(渲染由顶部
// 接线层注入的 done 承接),此处无需逐点改造。
if (options.controlled === true) {
// 受控接线(默认数据流,在共享监听挂载之后):注册 store、自建
// 分页容器、同步勾选事件、首屏取数。搜索/排序/switch/编辑等既有
// 监听的 table.reloadData 调用经 shim 自动分流到 store.reload(渲染
// 由顶部接线层注入的 done 承接),此处无需逐点改造。
// controlled:false 的逃生口页不走此分支,保持引擎 url 模式。
if (options.controlled !== false) {
// 分页容器挂在引擎视图容器之后(表格容器外),不与引擎分页共存。
// 注意 layui render 后原 table 元素被移出视图(成为 view 的兄弟
// 节点),不能用 closest 向上找 view