我想将我的数据检索与RequireJS的本地存储同步分开。 为此,我有一个模块从适配器获取数据并将其存储到window.myData对象。 然后我传递另一个模块,在loadSuccess完成后运行从window.myData到localStorage的同步。
当我调用AdapterService.retrieveRoomsFromServer(“john”,“doe”)时,对worklight的调用已经完成,但是有一个javascript错误:
TypeError: Cannot call method 'checkEndSynchro' of undefined
undefined似乎是RequireJS define()的函数参数中的SynchronizeLocalStorage传递。
我的AdapterService.js:
define([
"jquery",
"synchronizeLocalStorage"
], function( $, SynchronizeLocalStorage) {
return {
retrieveRoomsFromServer: function(username, password) {
this._invokeProcedureGetListRooms(username, password);
},
_invokeProcedureGetListRooms: function(user, password) {
var invocationData = {
adapter : 'MyHTTPAdapter',
procedure : 'getListRooms',
parameters : [user, password]
};
var options = {
onSuccess : this._loadSuccess,
onFailure : this._loadFailure,
invocationContext: this
};
WL.Client.invokeProcedure(invocationData, options);
},
_loadSuccess: function(result) {
var items = result.invocationResult.array;
var self = result.invocationContext;
WL.Logger.debug('loading users rooms');
for (var i = 0; i < items.length; i++) {
var id = items[i].id;
var name = items[i].name;
var room = {'id':id, 'name':name};
window.myData.myRooms.push(room);
}
window.flags.myRoomsLoaded = true;
SynchronizeLocalStorage.checkEndSynchro();
},
_loadFailure: function(result) {}
};
});
感谢您的帮助。
答案 0 :(得分:0)
您在适配器中如何使用requireJS
?您不能在适配器中包含外部库。 RequireJS适用于模块化加载...但适配器不是这种情况,因为可能只有1个XML文件和1个.js文件。
部署适配器后,它就变成了Java对象,这意味着它无法使用外部资源,因此在此上下文中使用requireJS没有任何意义。