在login.js中,rest API会返回某些值,我必须在Dashboard.html中使用它,但我无法在dashboard.js中获取这些值。
我也希望在index.html中实现相同的目标(即)我必须从login.js获取值。
现在请在下面澄清我,
如何在viewModels中将值从一个js传递到另一个js文件? 如何将viewModel js文件中的值传递给main.js文件?
login.js
define(['ojs/ojcore', 'knockout', 'jquery', 'ojs/ojknockout', 'ojs/ojinputtext'],
function (oj, ko, $,main)
{
var myviewModel = function()
{
var self = this;
self.isLoggedIn = ko.observable(false);
self.username = ko.observable();
self.password = ko.observable();
self.save = function(data, event)
{
$.ajax({
url: "my url",
type: "GET",
headers: { header parameters },
success: function(data)
{
var json =JSON.stringify($.parseJSON(data));
// alert(json);
var val = JSON.parse(json);
self.ERROR_CODE= ko.observable(val.Body.processResponse.ERROR_CODE);
self.ERROR_MSG= ko.observable(val.Body.processResponse.ERROR_MSG);
if(self.ERROR_CODE()=='S')
{
self.isLoggedIn(true);
window.location="js/views/dashboard.html";
}
document.getElementById('errormsg').value=val.Body.processResponse.ERROR_MSG;
},
error: function(jqXHR, exception)
{
alert("Not OK!") ;
}
})
}
}
return new myviewModel();
});
我想传递self.isLoggedIn值。
答案 0 :(得分:0)
创建一个单独的js文件,让我们说xyzState.js,它将用于保存导航或js文件之间的数据。 现在几点要记住。
状态文件看起来像这样。
define('xyzstate',
['ko'],
function (ko) {
var self = {};
var clear = function () {
self.isLoggedIn= false;
self = _.extend(self, {
isLoggedIn: false,
});
return self;
});
答案 1 :(得分:0)
这是Oracle JET中的模块间通信的概念,或者你可以说是淘汰赛。当我们说模块时它指的是一对html和js(视图和视图模型)文件。因此,当您想要从一个js访问或通信到另一个js时,这意味着您想要进行模块间通信。 Knockout提供以下功能。
ko.dataFor(的document.getElementById( 'homeContent'))
你也可以参考我认为非常有用的oracle博客。
https://blogs.oracle.com/geertjan/entry/intermodular_communication_in_oracle_jet1
她的ko.dataFor(document.getElementById('homeContent'))您需要获取要访问可观察变量的模块的元素id。假设有一个模块有图表组件,你想访问它的钻取处理程序,你可以参考上面代码中的图表元素id。