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.
This commit is contained in:
yumoqing 2026-07-30 11:17:21 +08:00
parent 1623c891ab
commit 8d8f9b58a5

View File

@ -26,8 +26,10 @@
"clear_label": "清除" "clear_label": "清除"
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "search", "actiontype": "script", "target": "self", "wid": "self", "event": "search", "actiontype": "urlwidget",
"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);}" "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 "cwidth": 8, "cheight": 2
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "wid": "self", "event": "click", "actiontype": "urlwidget",
"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);}" "target": "sage_main_content", "mode": "replace",
"options": {"url": "{{base}}?providerid={{active_provider}}&search={{active_search}}"}
}] }]
} }
{% for c in catelogs %} {% for c in catelogs %}
@ -57,8 +60,9 @@
"cwidth": 10, "cheight": 2 "cwidth": 10, "cheight": 2
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "wid": "self", "event": "click", "actiontype": "urlwidget",
"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);}" "target": "sage_main_content", "mode": "replace",
"options": {"url": "{{base}}?providerid={{active_provider}}&catelogid={{c.id}}&search={{active_search}}"}
}] }]
} }
{% endfor %} {% endfor %}
@ -92,8 +96,9 @@
"cwidth": 18 "cwidth": 18
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "wid": "self", "event": "click", "actiontype": "urlwidget",
"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);}" "target": "sage_main_content", "mode": "replace",
"options": {"url": "{{base}}?catelogid={{active_catelog}}&search={{active_search}}"}
}] }]
} }
{% for p in providers %} {% for p in providers %}
@ -105,8 +110,9 @@
"cwidth": 18 "cwidth": 18
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "wid": "self", "event": "click", "actiontype": "urlwidget",
"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);}" "target": "sage_main_content", "mode": "replace",
"options": {"url": "{{base}}?providerid={{p.providerid}}&catelogid={{active_catelog}}&search={{active_search}}"}
}] }]
} }
{% endfor %} {% endfor %}