【问题标题】:Intermodular communication in Oracle JETOracle JET 中的模块间通信
【发布时间】:2017-05-21 12:11:29
【问题描述】:

我使用 Oracle JET QuickStart Basic 模板在 Oracle JET 中创建了一个示例应用程序。我希望应用程序在两个 mudule 之间进行通信。我曾尝试使用 Geertjan 的博客 Intermodular communication in Oracle JET(Part 2) 和 Intermodular communication in Oracle JET(Part 3) 中提到的步骤,但不幸的是它似乎不起作用。如果有人向我解释如何使用 Oracle JET QuickStart Basic 模板进行模块间通信,那将是非常有帮助的。谢谢。

【问题讨论】:

  • 您能否提供更多有关您尝试过的内容以及遇到的错误的详细信息?从您阅读的博客文章中可以看出,有多种方法可以做到这一点。

标签: javascript oracle oracle-jet knockout-postbox


【解决方案1】:

在导航到其他模块时,您可以传递一些参数。

<!-- Module binding with params -->
<div data-bind="ojModule: {name: currentName, params: currentName}"></div>

http://www.oracle.com/webfolder/technetwork/jet/jsdocs/ojModule.html

在附加模块时可以使用参数初始化变量

self.handleAttached = function (info) {
          var param = ko.utils.unwrapObservable(info.valueAccessor()).params;
          console.log(param);
          self.variableToBeInitialized= param;
          };

https://docs.oracle.com/middleware/jet230/jet/reference-jet/oj.ModuleBinding.ConventionMethods.html

【讨论】:

  • 在你的答案中包含一些代码,以防链接中断
【解决方案2】:

您可以使用可以从所有模块访问/修改的全局变量。

第 1 步:定义要跨模块通信的变量(在 appController.js/main.js 中)。

self.var1= ko.observable("");
self.var2= ko.observable('');

第二步:在modules中获取rootModel后就可以访问变量了-

self.rootModel = ko.dataFor(document.getElementById('globalBody'));

var variable1= self.rootModel.var1;
var variable2= self.rootModel.var2;

希望这会有所帮助!

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-24
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2015-07-23
    相关资源
    最近更新 更多