Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
breezejs:分页和延迟加载_Breeze - Fatal编程技术网

breezejs:分页和延迟加载

breezejs:分页和延迟加载,breeze,Breeze,我正在检索委托实体上的MandatesHistory集合,如下所示: var query = breeze.EntityQuery.from("MandatesHistory") .where("Mandate.Id", "==", mandatId) .expand("Mandate").skip(offset).take(pageSize).inlineCount(true); return man

我正在检索委托实体上的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 and take,我宁愿在每次查询后覆盖集合。

不完全确定我是否理解这个问题。我不确定您指的是什么“集合”,但我认为部分问题是对查询结果与EntityManager缓存内容的误解。当您使用skip and take执行查询时,查询返回的结果通常是在。。。方法,实际上就是你想要的。i、 在你的情况下,正好有10条记录。(假定页面大小为10)

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


这有意义吗?

问题是我已经将实体的集合属性绑定到我的视图(使用angularjs),通过它我可以循环显示分页表中的记录。但是,我只想根据我所在的页面显示查询返回的10条记录。也许我应该直接绑定到结果,而不是实体的属性。这样我就避免了缓存问题,但我觉得这很不方便。这更清楚吗?抱歉,不是真的:)如果您创建了集合并且只想绑定其中的10条记录,那么只需在使用查询结果填充集合之前清除集合。我想我一定是遗漏了什么。我填写藏品的方式不允许我事先清理。我使用Expand并让breeze将集合与现有实体(缓存中)合并,我很确定我们(Jay和我)也不确定要绑定哪个集合。。。以及如何。如果您从Ng绑定到集合并从那里返回到如何设置集合,那么我们可能会攻击这一点。
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.
});