0

たとえば、新しいエンティティを作成するためにサーバー関数を呼び出すこの 1 人の男がいます。

function loadData() {
    var vServerController = mobileController.serverController();    
    var vJSONRequest =  vServerController.createJSONRPCRequest();

    vJSONRequest.setQueryMethod("createSomeNewElementBasedOnTwoIds");

    vJSONRequest.addParameter("firstID", 1);
    vJSONRequest.addParameter("secondID", 2);
    vJSONRequest.setOnFinish(callBackOnFinish);
    vServerController.addToQueue(vJSONRequest);
}

function callBackOnFinish() {
    var vController = mobileController.activeController();
    vController.showView(Screens.SomeScreen, true);
}

では、この呼び出しの後に画面を更新するにはどうすればよいでしょうか? サーバーはデータの完全なセットではなく、新しいデータのみを返します。

これを行うための最良のアプローチは何ですか?

4

1 に答える 1

0

現在表示されているデータを更新したい場合、2 つのオプションがあります。これにはおそらくコールバックを使用する必要はありません。

  1. 表示されたデータセットを置き換える
  2. 表示されたレコードを更新する
  3. (ユーザー入力がある場合、または新しいエントリを作成した場合)エントリをマージします

1: サーバーからデータを返すだけfoundset.setDataMode(DataMode.REPLACE)- 表示されたデータが自動的に更新されます。ただし、1 つのエンティティに対して複数のレコードを操作していて、そのうちの 1 つだけを更新したい場合は、オプション 2 を使用します。

2: datamode replace を使用せずに、更新する特定のレコードのみを返します。レコードは、その key/id 要素によって識別されます。エンティティ エディタで小さな鍵の記号が付いたものを見つけることができます。したがって、それらのキー要素と必要な追加要素が返されることを確認してください。AppConKit は、既存のレコードをデータと自動的にマージして表示します。

3: デバイスで新しいレコードを作成した場合、そのレコードには client_uuid という値が含まれます。client_uuid と key 要素の両方を含むレコードをサーバーから返すと、デバイスで作成されたレコードがサーバーで作成されたレコードとマージされ、新しいレコードが表示されます。

お役に立てれば!

于 2013-07-11T10:06:42.167 に答える