2014-02-26 4 views
-1

RequireJS를 사용하여 로컬 저장소 동기화에서 데이터 검색을 분리하려고합니다. 이렇게하려면 어댑터에서 데이터를 가져 와서 window.myData 개체에 저장하는 모듈이 있어야합니다. loadSuccess가 완료되면 window.myData에서 localStorage로 동기화를 실행하기 위해 다른 모듈을 전달합니다.Worklight 6.1 - 어댑터 호출시 요구 사항

내가 AdapterService.retrieveRoomsFromServer를 호출 할 때 ("존", "미상"), 작업등에 대한 호출이 완료하지만, 자바 스크립트 오류가있다 :

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는 모듈 로딩을위한 것으로, XML 파일 1 개와 .js 파일 만있을 수 있기 때문에 어댑터에는 해당되지 않습니다.

어댑터를 배포하면 외부 리소스를 사용할 수 없음을 의미하는 Java 객체가되므로이 컨텍스트에서 requireJS를 사용하면 의미가 없습니다.

+0

WL.Client.invokeProcedure를 사용하여 어댑터 프로 시저를 호출하려면 클라이언트 측 코드에서 requireJS를 사용하고 있습니다. – ptitjuju69

관련 문제