1

Knockout.jsとを使用して HTML5 アプリを開発していますがJayData、プルして更新するデータ リストを実装しているときに問題が発生しました。

API を使用してリモートODataサービスにクエリを実行し、結果を配列JayDataに割り当てます。KO observable

db.MySet
  .orderBy('it.Field1')
  .skip(recordsToSkip)
  .take(20)
  .toArray()
  .then(function(result) {
     self.MyDataList(result);
  }

私はいつも古い記録を失います。コードを修正するにはどうすればよいですか?


4

2 に答える 2

1

オブジェクトの新しい配列を古いリストに連結する必要があります。

.then(function(result) {
    oldList = oldList.concat(result);
    self.MyDataList(oldList);
}

(したがって、最初の実行では、設定する必要がありますoldList = [])

于 2012-12-12T12:58:57.553 に答える
1

結果をKnockoutオブザーバブルにバインドしているときに、小さなことが欠けていると思います。既存の配列に要素が既に含まれているかどうかを確認し、結果を既存の配列に追加します。

私の同僚の Viktor にはチュートリアルがあり、Knockout+JayData の pull-to-refresh を使用してハイスコア リストを実装しています。

db.MySet
  .orderBy('it.Field1')
  .skip(recordsToSkip)
  .take(20)
  .toArray()
  .then(function(result) { 
     if (result.length){
       if (self.MyDataList().length){
            self.MyDataList(self.MyDataList().concat(result));
       }else{
            self.MyDataList(result);
       }
    }
   });

これでアプリは修正されますか? この例の完全なコンテキストは、 GitHubで見つけることができます

于 2012-12-12T13:02:55.297 に答える