From 8d8f9b58a5559c1c2dfd73d2030ec122b5211b5b Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 30 Jul 2026 11:17:21 +0800 Subject: [PATCH] fix: use urlwidget actiontype (not script) for internal navigation Script-based getWidgetById+widgetBuild was async without await, causing black screen. urlwidget actiontype is Bricks' built-in navigation mechanism that properly handles async rendering. --- wwwroot/model_plaza.ui | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/wwwroot/model_plaza.ui b/wwwroot/model_plaza.ui index 8c589a6..8b7b2fc 100644 --- a/wwwroot/model_plaza.ui +++ b/wwwroot/model_plaza.ui @@ -26,8 +26,10 @@ "clear_label": "清除" }, "binds": [{ - "wid": "self", "event": "search", "actiontype": "script", "target": "self", - "script": "var kw=(event.params&&event.params.keyword)||event.keyword||'';var u='{{base}}?providerid={{active_provider}}&catelogid={{active_catelog}}&search='+encodeURIComponent(kw);var t=bricks.getWidgetById('sage_main_content',bricks.app);if(t){t.clear_widgets();bricks.widgetBuild({widgettype:'urlwidget',options:{url:u}},t);}" + "wid": "self", "event": "search", "actiontype": "urlwidget", + "target": "sage_main_content", "mode": "replace", + "options": {"url": "{{base}}?providerid={{active_provider}}&catelogid={{active_catelog}}&search=${keyword}"}, + "params_mapping": {"keyword": "keyword"} }] } ] @@ -44,8 +46,9 @@ "cwidth": 8, "cheight": 2 }, "binds": [{ - "wid": "self", "event": "click", "actiontype": "script", "target": "self", - "script": "var t=bricks.getWidgetById('sage_main_content',bricks.app);if(t){t.clear_widgets();bricks.widgetBuild({widgettype:'urlwidget',options:{url:'{{base}}?providerid={{active_provider}}&search={{active_search}}'}},t);}" + "wid": "self", "event": "click", "actiontype": "urlwidget", + "target": "sage_main_content", "mode": "replace", + "options": {"url": "{{base}}?providerid={{active_provider}}&search={{active_search}}"} }] } {% for c in catelogs %} @@ -57,8 +60,9 @@ "cwidth": 10, "cheight": 2 }, "binds": [{ - "wid": "self", "event": "click", "actiontype": "script", "target": "self", - "script": "var t=bricks.getWidgetById('sage_main_content',bricks.app);if(t){t.clear_widgets();bricks.widgetBuild({widgettype:'urlwidget',options:{url:'{{base}}?providerid={{active_provider}}&catelogid={{c.id}}&search={{active_search}}'}},t);}" + "wid": "self", "event": "click", "actiontype": "urlwidget", + "target": "sage_main_content", "mode": "replace", + "options": {"url": "{{base}}?providerid={{active_provider}}&catelogid={{c.id}}&search={{active_search}}"} }] } {% endfor %} @@ -92,8 +96,9 @@ "cwidth": 18 }, "binds": [{ - "wid": "self", "event": "click", "actiontype": "script", "target": "self", - "script": "var t=bricks.getWidgetById('sage_main_content',bricks.app);if(t){t.clear_widgets();bricks.widgetBuild({widgettype:'urlwidget',options:{url:'{{base}}?catelogid={{active_catelog}}&search={{active_search}}'}},t);}" + "wid": "self", "event": "click", "actiontype": "urlwidget", + "target": "sage_main_content", "mode": "replace", + "options": {"url": "{{base}}?catelogid={{active_catelog}}&search={{active_search}}"} }] } {% for p in providers %} @@ -105,8 +110,9 @@ "cwidth": 18 }, "binds": [{ - "wid": "self", "event": "click", "actiontype": "script", "target": "self", - "script": "var t=bricks.getWidgetById('sage_main_content',bricks.app);if(t){t.clear_widgets();bricks.widgetBuild({widgettype:'urlwidget',options:{url:'{{base}}?providerid={{p.providerid}}&catelogid={{active_catelog}}&search={{active_search}}'}},t);}" + "wid": "self", "event": "click", "actiontype": "urlwidget", + "target": "sage_main_content", "mode": "replace", + "options": {"url": "{{base}}?providerid={{p.providerid}}&catelogid={{active_catelog}}&search={{active_search}}"} }] } {% endfor %}