breezejs:分页和延迟加载

时间:2013-06-03 13:30:41

标签: breeze

我正在Mandate Entity上检索MandatesHistory集合,如下所示:

  var query = breeze.EntityQuery.from("MandatesHistory")
                .where("Mandate.Id", "==", mandatId)
                .expand("Mandate").skip(offset).take(pageSize).inlineCount(true);

            return manager.executeQuery(query.using(service));

它第一次运行很好,集合中填充了10条记录(这是pageSize的值)。

但是第二次,接下来的10条记录被添加到集合中,而不是替换之前的10条。因此,当我滚动页面时,集合会不断增长。

显然我的分页也不再适用,因为它每页只需要10条记录,即在任何给定时间内集合中的10条记录。

这是预期的行为吗?如果我指定skip和take,我宁愿在每次查询后都会覆盖该集合。

1 个答案:

答案 0 :(得分:0)

我不完全确定我理解这个问题。我不确定你指的是什么'集合',但我认为问题的一部分是对查询结果与EntityManager缓存内容的误解。使用skip和take执行查询时,查询返回的结果(通常在 then ...方法中)实际上就是您想要的结果。即在你的情况下恰好10条记录。 (假设pageSize为10)。

var query = breeze.EntityQuery.from("MandatesHistory")
            .where("Mandate.Id", "==", mandatId)
            .expand("Mandate").skip(offset).take(pageSize).inlineCount(true);


manager.executeQuery(query.using(service)).then(data) {
   var next10items = data.results; // this will always be 10 ( or less) records.
});

另一方面,EntityManager的缓存会随着它看到的每个“新”数据页面而增长。但总的来说,你不应该关心这一点。您应该每次都使用查询结果。

这有意义吗?