我的页面上有一个IG,其中带有一个自定义工具栏按钮,可打开“模态对话框”页面。由于模式对话框的打开方式,因此我无法使用本地ForEach(items) { item in
HStack {
Text("\(item.name ?? "")")
}
}
捕获其关闭。
我在IG中打开“ Modla对话框”使用的JavaScript是:
Dialog Close
问题在于,模式对话框关闭后,我需要刷新IG。如何从父页面捕获模式对话框关闭?
答案 0 :(得分:0)
模式对话框应使用apex.navigation.dialog
打开。当人们为模式页面调用apex_util.prepare_url
时,它会生成考虑到目标页面设置的正确JavaScript代码。
有一个选项p_plain_url
可用于仅获取URL,但不要在GenerateURL
中启用它,因为其他选项很重要。另一个参数p_triggering_element
可让您指定动态操作的元素(apex_page.get_url不是一个选项,其工作原理类似)。
假设GenerateURL
如下所示(请注意,我将文档作为triggeringElement传递):
declare
l_url varchar2(512);
begin
l_url := apex_util.prepare_url(
p_url => 'f?p=' || :APP_ID || ':51:' || :APP_SESSION || ':::::P51_ID:' || apex_application.g_x01,
p_triggering_element => 'document'
);
apex_json.open_object();
apex_json.write('url', l_url);
apex_json.close_object();
end;
然后可以将JavaScript代码修改为:
apex.server.process(
'GenerateURL',
{x01: idForURL},
{success: function (pData) {
var funcBody = pData.url.replace(/^"javascript:/, '').replace(/\"$/,'');
new Function(funcBody).call(window);
}
});
请注意,JavaScript正在将ID传递给生成URL的过程,而不是整个URL。这使得该过程的使用受到一定程度的限制,这有助于防止用户滥用该过程。您甚至可以添加检查以验证用户是否可以查看传入的ID值。
在适当的位置上,您可以添加一个动态操作来监听document
(JavaScript Expression = document)上的对话框关闭事件。请注意,如果通过关闭或取消按钮关闭对话框,则事件不会触发。