Oracle JET中的模块间通信

时间:2017-05-21 12:11:29

标签: javascript oracle oracle-jet knockout-postbox

我使用 Oracle JET QuickStart Basic模板在Oracle JET中创建了一个Sample应用程序。我希望应用程序在两个mudules之间进行通信。我尝试过使用Geertjan博客Intermodular communication in Oracle JET(Part 2)Intermodular communication in Oracle JET(Part 3)中提到的步骤,但遗憾的是它似乎无法正常工作。如果有人向我解释如何使用Oracle JET QuickStart Basic模板进行模块间通信,那将是一个很大的帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

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

步骤1:定义变量(在appController.js / main.js中)以跨模块进行通信。

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

步骤2:在模块中,您可以在获取rootModel后访问变量 -

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

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

希望这有帮助!

由于

答案 1 :(得分: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