我正在用Knockout.js和JayData开发Knockout.js应用程序,在实现拉式刷新数据列表时遇到了一个问题。
我使用OData API查询远程JayData服务,并将结果分配给KO observable数组:
db.MySet
.orderBy('it.Field1')
.skip(recordsToSkip)
.take(20)
.toArray()
.then(function(result) {
self.MyDataList(result);
}我总是丢掉旧唱片。我怎么才能修正我的代码?
发布于 2012-12-12 13:02:55
我想,在将结果绑定到可观察的Knockout时,可能遗漏了一件小事情:检查现有数组是否已经包含元素,并将结果附加到现有的元素中。
我的同事Viktor有一个教程,它用Knockout+JayData拉式刷新实现高分列表
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-12 12:58:57
您需要将新的对象数组连接到旧列表中:
.then(function(result) {
oldList = oldList.concat(result);
self.MyDataList(oldList);
}(因此,在第一次运行时,需要设置oldList = [])
https://stackoverflow.com/questions/13840108
复制相似问题