2017-05-23 3 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

関連する問題