我正在使用Knockout.js
和JayData
开发HTML5应用,并且在实现拉取刷新数据列表时遇到了问题。
我使用OData
API查询远程JayData
服务,并将结果分配给KO observable
数组:
db.MySet
.orderBy('it.Field1')
.skip(recordsToSkip)
.take(20)
.toArray()
.then(function(result) {
self.MyDataList(result);
}
我总是丢失旧记录。我怎么能修复我的代码?
答案 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
上找到该示例的完整上下文