2016-06-09 2 views
0

마스터보기의 선택 사항을 기반으로 업데이트 된지도가있는 상세 정보보기로 splitapp를 만들려고합니다. 현재 목록 항목을 선택하여 실행되는 함수에서 모델을 설정하려고합니다. 마스터 컨트롤러에서 sap.ui.getCore().setModel(oModel, "ModelName");을 사용하여 필요한 모델을 설정 중입니다. 세부 컨트롤러에서 sap.ui.getCore().getModel("ModelName").getData();을 사용하여 모델에 액세스하려고합니다. 그러나 sap.ui.getCore().getModel("ModelName")이 정의되지 않은 상태로 나오고 있습니다.SAPUI5 : 하나의 컨트롤러에서 다른 컨트롤러로 모델 전달

답변

1

구성 요소 기반 UI5 응용 프로그램을 빌드하는 것이 좋습니다. 이렇게하면 구성 요소의 init 함수에서 모델 초기화를 수행 할 수 있습니다

init: function() { 
    // call the init function of the parent 
    UIComponent.prototype.init.apply(this, arguments); 
    // set data model 
    var oData = { 
     prop: test 
    }; 
    var oModel = new JSONModel(oData); 
    this.setModel(oModel); 
} 

당신의 manifest.json를 사용하는 경우, 그것은이 모델을 정의하는 것이 훨씬 낫다; 이 모델은 전체 응용 프로그램을 통해 사용할 수 있습니다. 이와 유사하게 생성 된 i18n 또는 디바이스 모델과 같은 뷰 및 컨트롤러를 포함합니다.

Setting up the component.js, Application descriptors (UI5 연습 페이지)

0

글로벌 모델을 원할 경우 구성 요소를 주 소유자로 사용할 것을 제안합니다.

각 컨트롤러에서

당신은

this.getOwnerComponent().setModel(oModel, sModelName); 

을 할 수 있으며 로컬 것 때문에 이상이

this.getOwnerComponent().getModel(sModelName); 

뷰와 컨트롤러가 자신의 모델의 가시성이 함께 검색 할 수 있습니다.

관련 문제