javascript - 如何在 CQ 对话框中延迟加载标签

标签 javascript extjs aem

如果页面分配了很多标签,则加载对话框可能需要相当长的时间(最多 20 秒)。如果作者只想更改多个页面上的某些其他属性,这可能会变得相当烦人。因此问题是,有没有办法在对话框中延迟加载标签?

更准确地说,我说的是基于 ExtJS 的“经典 UI”。

最佳答案

实际上有两种方法可以实现这一点,都使用按钮来触发加载:

打开子对话框:

<button
    jcr:primaryType="cq:Widget"
    text="Open Tags Dialog"
    handler="function(button) {
        var parent = button.findParentByType('dialog');
        var dialog = CQ.WCM.getDialog(PATH_TO_DIALOG + '.infinity.json');
        dialog.setFormUrl(parent.form.url);
        dialog.loadContent(parent.form.url);
        dialog.show();
    }"
    xtype="button"/>

说明:单击时会触发处理程序。它加载子对​​话框,设置提交 url 和应将数据加载到与当前对话框相同的节点的源。

覆盖选项卡(按钮位于其自己的选项卡中):

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
    jcr:primaryType="cq:Panel"
    title="Tags"
    extensionGet=".json"
    xtype="customcontentpanel">
    <items jcr:primaryType="cq:WidgetCollection">
        <button
            jcr:primaryType="cq:Widget"
            text="Load Tags"
            handler="function(button) {
                    var parent = button.findParentByType('panel');
                    var tabConf = CQ.shared.HTTP.eval(PATH_TO_TAB + '.infinity.json');
                    var tab = CQ.Util.formatData(tabConf);
                    for (var i=0; i&lt;tab.items.length; i++) {
                        parent.add(tab.items[i]);
                    }
                    parent.doLayout();
                    parent.loadContent();
                    parent.remove(button);
                }"
            xtype="button"/>
    </items>
</jcr:root>

说明:cq:Panel 需要使用 xtype="customcontentpanel"extensionGet=".json"。默认情况下,其他属性继承自包含此面板的对话框。 CQ.shared.HTTP.eval 加载 JSON 并将其转换为 JavaScript 对象。 然后,CQ.Util.formatDatajcr:primaryType 等 XML 属性转换为 xtype。 然后只需迭代刚刚加载的选项卡配置的所有元素并将它们添加到当前选项卡。由于这些小部件是在对话框初始加载后添加的,因此需要再次调用 doLayout() 以及 loadContent()。最后一步是删除按钮。

关于javascript - 如何在 CQ 对话框中延迟加载标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472702/

相关文章:

javascript - 如何将所有这些逻辑与 javascript Promises 混合在一起?

javascript - 如何使用 Javascript 在 <div> 中添加数据动画 ="fadeinup"

javascript - 如何将MVC架构应用到ExtJS项目中?

javascript - 如何获取json对象的长度?

java - 使用 DAM Assets 进行 AEM JUnit 测试

javascript - 使用 B2C 的 Javascript/Angular 6 SPA 应用程序中通过 MSAL.JS 注销时出错

javascript - 如何只匹配那些前面有偶数个 `%` 的数字?

javascript - ExtJS DateField 混淆格式

javascript - ExtJS - 表单失败消息框

aem - 如何从自定义多字段组件中获取值?