使用Knockout和JayData进行刷新

时间:2012-12-12 12:45:01

标签: javascript html5 knockout.js odata jaydata

我正在使用Knockout.jsJayData开发HTML5应用,并且在实现拉取刷新数据列表时遇到了问题。

我使用OData API查询远程JayData服务,并将结果分配给KO observable数组:

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

我总是丢失旧记录。我怎么能修复我的代码?


2 个答案:

答案 0 :(得分:1)

您需要将新的对象数组连接到旧列表:

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

(因此,在第一次运行时,您需要设置oldList = []

答案 1 :(得分:1)

我想在将结果绑定到Knockout observable时会遗漏一些小事:检查现有数组是否已包含元素并将结果附加到现有数据。

我的同事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

上找到该示例的完整上下文