0

例如,我们有一个人调用服务器函数来创建一个新实体:

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

假设您要更新当前显示的数据,您有两个选择 - 您可能不需要为此使用回调

  1. 替换显示的数据集
  2. 更新显示的记录
  3. (如果您有用户输入或创建了新条目)合并条目

1:只需从服务器返回数据foundset.setDataMode(DataMode.REPLACE)-它会自动刷新显示的数据。但是,如果您正在为一个实体处理多个记录并且只想更新其中一个,请使用选项 2。

2:仅返回您要更新的特定记录,而不使用数据模式替换。记录由它的 key/id 元素标识。您可以在实体编辑器中找到标有小钥匙符号的那些。因此,只需确保返回您想要的那些关键元素和任何其他元素。AppConKit 将自动将现有记录与数据合并并显示。

3:如果您在设备上创建了一条新记录,该记录将有一个名为 client_uuid 的值。如果您现在从服务器返回一条包含 client_uuid 和 key 元素的记录,则在设备上创建的记录将与服务器创建的记录合并,并显示新记录

希望这可以帮助!

于 2013-07-11T10:06:42.167 回答