1

我正在尝试从链接列调用 javascript,这将通过将该列的目标 URL 设置为打开一个内联弹出窗口:

javascript:$s("P3_ITEM","#COLUMN1#");openModal("MY_INLINE_POPUP");

我收到一个 javascript 错误:Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'open'. 我究竟做错了什么?

4

3 回答 3

1

当您未将尝试调用的区域模板设置为模态/内联对话框时,会发生此错误。

您需要将区域“MY_INLINE_POPUP”的模板更改为 Inline Dialog,您可以通过转到 Region Settings -> Appearance -> Template 然后选择 Inline Dialog...

另一个提示:在创建内联对话框时,您还需要处理另外一项区域设置,即区域布局。在 Region Layout 内部,位置必须是 Inline Dialogs..

截屏

于 2020-02-24T08:24:59.130 回答
1

我无法使用 Inline Dialog 模板重现该问题,但是,我收到了 Inline Popup 模板的错误。以下是一些有助于解决任一模板问题的步骤...

  1. 将列的类型链接更改为纯文本
  2. 导航到 apex.oracle.com/ut > 参考 > 按钮生成器。使用按钮构建器构建您喜欢的按钮,如果您更喜欢按钮外观,您甚至可以将其设置为链接样式。复制整个标记字段中的 HTML 并将其粘贴到列的HTML 表达式字段中。这是一个例子:

    <button type="button" class="t-Button t-Button--link">My Button</button>
    
  3. 在上一步的标记中添加两件事:1)作为“数据-”属性所需的任何列值和 2)要在动态操作中定位的​​类(我将使用 my-custom-class)。您的示例需要来自 COLUMN1 的值,所以它看起来像这样:

    <button type="button" data-column1="#COLUMN1#" class="t-Button t-Button--link my-custom-class">My Button</button>
    
  4. 创建一个新的动态动作。对于动态操作,将Event设置为Click,将Selection Type设置为jQuery Selector,将jQuery Selector设置为.my-custom-class(来自上面的 HTML),并将Event Scope设置为Dynamic(以在报告刷新时保持工作正常)。对于默认创建的 Action,将Type设置为Execute JavaScript Code在代码字段中输入以下代码:

    $button = $(this.triggeringElement);
    $s('P3_ITEM', $button.data('column1'));
    

    这将像您所做的那样将列值传输到项目。

  5. 向动态操作添加附加操作。将类型设置为打开区域,然后选择要打开的正确区域。

那应该这样做。我在任何地方都找不到openModal记录的功能。它可能不再维护。Dynamic Actions Open RegionClose Region可能是现在最好的选择。可以使用 jQuery UI 对话框 API,但我建议不要这样做。

有关更多信息,请查看 John Snyders 的这篇博文:https ://hardlikesoftware.com/weblog/2019/12/23/all-the-things-that-pop-up/那里有一个演示应用程序,您可以下载并从中学习。

于 2020-03-09T16:28:46.340 回答
0

如果你想打开一个弹出区域然后使用这个:

$("#POPUP_REGION_ID).popup("open");
于 2020-02-24T12:31:08.027 回答