如何等待创建/编辑实体模式窗口完成渲染并在 2sxc 模块中执行我的自定义 js 代码?

Posted

技术标签:

【中文标题】如何等待创建/编辑实体模式窗口完成渲染并在 2sxc 模块中执行我的自定义 js 代码?【英文标题】:How can I wait for the create/edit entity modal window to finish rendering and execute my custom js code in 2sxc module? 【发布时间】:2021-10-13 22:35:45 【问题描述】:

当用户按下创建实体按钮或编辑实体按钮时,在由 js 动态构建的 iframe 中会出现相同的模态窗口。所以我要做的是等到它完全渲染然后执行我的自定义js代码。那么有没有合适的方法来做到这一点?诸如RenderFinished射击之类的某种事件?不想使用超时,因为我知道这不是一个好方法。 到目前为止,我尝试以编程方式将 jquery 添加到页面中,因为由于某种原因,它当前没有在该特定页面上使用(可能是因为 iframe 是在没有 jquery 的情况下动态构建的,我需要自己添加它)。 之后,我尝试通过 jquery 选择器访问 iframe,然后以相同的方式访问 iframe.ready 内部元素(选择器甚至为该元素做好准备)。但是 iframe 被访问并且它里面的元素不是。就绪函数内的控制台日志只输出未找到的元素。当我在里面放置断点时,我看到还没有构建模式窗口,并且我的代码在它之前同步执行。所以在那一刻还没有什么可以找到的。 哦,当然,我试图把它全部放在$(document).ready 中。但这并没有改变现状…… 有关如何正确执行此操作的任何想法?

我为什么要做所有这些复杂的舞蹈的最终目标:我正在尝试添加对实体的 UrlKey 是唯一的验证。所以我想将我的 js 函数绑定到 UrlKey 输入的 onchange 事件并调用后端 api 进行验证,如果它不是唯一的,则返回新的 UrlKey 并相应地编辑 UrlKey 输入。我偶然发现的问题是在呈现模态 iframe 窗口后执行我的代码。 非常感谢任何提示。

【问题讨论】:

【参考方案1】:

你很幸运:)

2sxc 添加了一个公式功能,可以帮助您解决这个问题。有视频和教程等等。见http://r.2sxc.org/formulas

【讨论】:

非常感谢。 )

以上是关于如何等待创建/编辑实体模式窗口完成渲染并在 2sxc 模块中执行我的自定义 js 代码?的主要内容,如果未能解决你的问题,请参考以下文章

导出异步等待变量并在 JS 中完成“等待”后将其导入另一个文件

布局编辑器渲染错误(未渲染)

ReactJs:如何在渲染之前等待 componentDidMount() 完成?

如何等待在 react.js 中渲染视图,直到 $.get() 完成?

如何等待 Android runOnUiThread 完成?

Vue 功能,在运行函数之前等待组件完成重新渲染