2014-02-26 88 views
-1

我想用RequireJS將我的數據檢索與本地存儲同步分開。 爲此,我有一個模塊從適配器獲取數據並將其存儲到window.myData對象。 然後,當loadSuccess完成時,我傳遞另一個模塊以從window.myData到localStorage運行同步。Worklight 6.1 - 適配器調用中的requireJS

當我打電話AdapterService.retrieveRoomsFromServer(「約翰福音」,「母鹿」),以工作燈的調用完成,但有一個JavaScript錯誤:

TypeError: Cannot call method 'checkEndSynchro' of undefined 

未定義似乎是SynchronizeLocalStorage傳遞函數RequireJS define()的參數。

我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

如何在適配器中使用requireJS?您不能將外部庫包含在適配器中。 RequireJS適用於模塊化加載...適配器不適用,因爲可能只有1個XML文件和1個.js文件。

一旦你部署了一個適配器,它就變成了一個Java對象,這意味着它將無法使用外部資源,所以在這個上下文中使用requireJS沒有任何意義。

+0

我在客戶端代碼上使用requireJS來調用WL.Client.invokeProcedure適配器的過程。 – ptitjuju69

相關問題