2016-10-17 1 views
0

은 내가Master.controller.js에서 Detail.controller.js의 함수에 액세스하는 방법?

jQuery.sap.require("cts.alert.controller.DetailController"); 

그리고 MasterController.js에서

sap.ui.define([ 
     "cts/alert/controller/DetailController", 
], function() { 
}) 

을 시도

DetailController.js

에 세부 컨트롤러의 이름을 변경

내가 this.detailfunction() 사용

, 그것은 undefined을 반환 (하지만 BaseController에서 작동합니까?)

그럼 내가 시도했는데 sap.ui.getCore().byId("__xmlview3--detailpage").getController().detailfunction() :

sap.ui.getCore().byId("__xmlview3--detailpage")이 뷰를 반환했지만 getController는 정의되지 않았습니다. 어떻게해야합니까?

+0

은 실제로 DetailController.controller.js라는 DetailController입니까? – Marc

+0

DetailController.js가 작동하지 않습니까? BaseController.js가 정상적으로 작동한다고 생각합니다. @Marc – Tina

+0

뷰에서 직접 사용되는 컨트롤러의 이름은 Bla * .controller * .js (사용자 지정 SAP 모듈 로더가 구현하는 주요 기능 중 하나임)로 지정해야합니다. 컨트롤러의 기본 클래스는 * .controller * .js 확장명을 가져서는 안되는 일반 클래스입니다. 보기에서 기본 제어기를 직접 사용하지 않는 것이 좋습니다. 그렇지 않으면 비어있는 * .controller * .js 파일을 상속 받아보기에서 사용하십시오. – schnoedel

답변

0

유틸리티 메서드 인 경우 두 컨트롤러가 확장한다고 가정하고 코드를베이스로 옮기는 것이 좋습니다. 그렇지 않은 경우, 세 x 째 유틸리티 모듈을 작성하여 마스터 W 세부 사항으로 모두 주입하십시오.

+0

나는 이해한다. Detail에 setInterval을 사용했고, Master의 Nav 버튼을 클릭 한 후이를 지우고 싶습니다. 그래서 간격 ID를 세 번째 모듈에 저장해야합니까? 간격 ID를 전역으로 설정하는 것을 wan't하지 않습니다. 감사합니다 ~ – Tina

+0

이 경우 응용 프로그램 상태를 저장하는 데 전역 jsonmodel을 사용할 수 있습니다. 앱 구조에 대한 자세한 내용을 알지 못하면 ID가 여기에 속할 것이라고 말하고 싶습니다. 이를 통해 두보기 모두에서 해당 모델을 읽고 쓸 수 있습니다. 희망이 도움이됩니다. –

+0

고마워, 나는 '바쁜'상태와 마찬가지로 이해한다. 도움이됩니다. – Tina