2017-05-23 6 views
1

ODataModel을 사용하여 마스터/디테일 SAPUI5 예제 작업을하고 있습니다. 마스터 목록에서 선택할 때마다 ID 당 바인딩 경로가 세부 정보보기로 업데이트됩니다. 내 앱 사용자는 마스터 목록 선택별로 세부 정보 페이지 (모델 변경)에 표시되는 정보를 변경할 수 있어야합니다.마스터 - 세부 - 응용 프로그램에서 hasPendingChanges 메서드 사용

사용자가 마스터 목록 항목 A에서 항목 B로 전환하고 항목 A의 세부 정보가 변경되면 알림을 받고 싶습니다.

마찬가지로 "hasPendingChanges"메소드를 사용할 계획이었습니다.

this.getView().getBindingContext().getModel() 

이 메서드는 동일한 모델을 반환한다는 것을 알게되었습니다. Java 배경을 가지고 있으면 현재 상세 뷰의 모델을 가져올 것으로 예상했습니다. (모델! 객체가 아닙니다 ...)

현재 세부 모델이 변경되면 마스터 목록 선택을 확인하는 방법이 있는지 알고 싶습니다.

this 질문을 찾았지만이 경우에는이 사람이 객체를 찾고있는 반면 내 경우에는 hasPendingChanges()를 반환 할 수 있도록 모델을 찾고 있습니다.

답변

1

모델과 응용 프로그램 데이터를 구별해야합니다. 모델 (이 경우 ODataModel)은 OData 서비스를 통해 응용 프로그램 데이터를 검색하고 수정하는 기능을 제공합니다. 응용 프로그램 데이터는 서비스의 엔터티 데이터 모델에 정의 된대로 엔터티를 나타냅니다.

이상적으로 응용 프로그램 공유의 모든보기 동일 모델 인스턴스, 즉 의미

this.getView().getModel() 

는 상세 컨트롤러뿐만 아니라 마스터에서 동일한 인스턴스를 반환해야합니다. 모델에는 마스터에 표시된 (부분) 엔티티 세트와 마스터 목록에서 항목을 선택하여 상세보기에로드 된 특정 엔티티가 포함됩니다. 상세 뷰에서 엔티티를 변경하면 이러한 변경 사항이 모델에 의해 수집됩니다.

따라서 앱에 hasPendingChanges을 호출하여 변경 사항이 적용되고 아직 OData 서비스로 전송되지 않았는지 확인하는 것은 저장됩니다.

+0

환상적인 설명, 감사합니다! – alexd