2012-09-24 3 views
1

Google Web Toolkit의 JSNI로 일부 Javascript API를 래핑하려고 할 때 질문이 있습니다. 자바 스크립트 API는 클라우드 기반 서버 인 Parse.com에서 제공합니다. 내 코드는 다음과 같습니다.백본 구조가있는 JSNI

public class MMParseComm { 

    private MMProject project = new MMProject();//MMProject has a member: String projectName. 

    private String _projectName; 

    private native void _retrieveCurrentProject_step1(int projectId) /*-{ 
    var ProjectList = $wnd.Parse.Object.extend("ProjectList"); 
    var query = new $wnd.Parse.Query(ProjectList); 
    query.equalTo("projectId", projectId); 
    query.find({ 
     success: function(results) { 
      //Questions here: In this function, I can access "_projectName" by 
      //[email protected]::_projectName, 
      //but cannot access "project.projectName" using the same syntax. 
      //Also, I have searched around but cannot find a way 
      //that can write out a JSON data retrieved in "results" 
      //as a JSONObject in Java. 
     }, 
     error: function(error) { 
       $wnd.alert("Error"); 
     } 
    }); 
    }-*/; 
} 

위의 코드에 표시된 것처럼 질문은 코드의 주석 부분에 있습니다. 배열에 문자열을 쓸 수있는 방법이 확실하지 않습니다 resultsproject.projectName에 있습니까? 또한, results에서 검색된 JSON 데이터를 자바 스크립트의 JSONObject로 랩핑하려면 어떻게해야합니까?

미리 감사드립니다. 나는 JSNI 외부 호출 구문을 생각하지 않는다

답변

0

Weibin

는 project.projectName에 액세스 할 수없는 이유이다 체인 호출을 지원합니다.

유형의 외부 JavaScript 프로토 타입이 있다고 가정합니다. 구문 분석을 위해 JSONObject API를 사용하는 것보다 overlay type을 만드는 것이 더 나을 것입니다. 더 효율적이고 간편하게 작업 할 수 있습니다. 나는 당신을 시작할 것입니다 ..

public class MMProject extends JavaScriptObject 
{ 
    protected MMProject() { } 

    public final native String getProjectId() /*-{ 
     return this.projectId; 
    }-*/; 
} 

그런 다음 성공 콜백으로 래퍼를 활용하십시오.

public class MMParseComm 
{ 
    private JsArray<MMProject> projects = null; 

    private native void _retrieveCurrentProject_step1(int projectId) /*-{ 
     var ProjectList = $wnd.Parse.Object.extend("ProjectList"); 
     var query = new $wnd.Parse.Query(ProjectList); 
     query.equalTo("projectId", projectId); 
     query.find({ 
      success: function(results) { 
       [email protected]::projects = results; 
      }, 
      error: function(error) { 
       $wnd.alert("Error"); 
      } 
     }); 
    }-*/; 
} 

를이 내가 당신을 조언 할 수있는 가장 적합한 개체 모델의 특성을 모른 채 :

나는 당신의 구현은 다음과 같을 수 있도록 결과는 아마 배열 유형이라고 생각한다. 명확성이 더 필요하면 도움을 드릴 수 있습니다.