【问题标题】:Dojo JsonRestStore and ClientFilter never updates from serverDojo JsonRestStore 和 ClientFilter 永远不会从服务器更新
【发布时间】:2012-02-16 10:38:33
【问题描述】:

我有一个绑定到启用了 ClientFilter 的 JsonRestStore 的 Dojo Datagrid。 我想要的行为:

每次我在 DataGrid 上调用过滤器时,商店都应该执行 在本地查询并更新网格。同时它还应该发送 对服务器进行相同的查询,将接收到的数据添加到客户端 过滤数据。

ClientFilter 的文档似乎说这是它应该如何工作的。 这是我得到的行为:

数据网格从服务器加载一次数据,根据 初始过滤器设置。仅对 datagrid.filter 的任何进一步调用 过滤客户端上的数据。不再有对服务器的 XHR 调用 已发送。

我花了几个小时调试 ClientFilter.js 来寻找错误但找不到。我做错了什么?

编辑:我想把它放在这里,希望寻找类似信息的人也不会陷入困境。 ClientFilter 和 JsonRestStore 存在已知问题。 对互联网上的所有旧文档感到困惑,我使用的是 dojo.data.JsonRestStore 这是一个旧且不受支持的(?)商店。 Dojo 现在已移至新的 ObjectStore API。 实现这个新 API 的最近的商店是 dojo.store.JsonRest,而 ClientFilter 功能由 dojo.store.Cache 提供

【问题讨论】:

  • 我想要的是,假设我正在根据创建日期进行过滤。如果我减少过滤器,它应该在客户端过滤并给我,但如果我增加过滤器的范围,它应该从服务器获得更多结果。这不是相当常规的事情吗?
  • 再解释一下用例:我过滤两个字段 fromDate 和 toDate。最初 fromDate=2012-01-20 和 toDate=2012-01-24 。这让我从服务器获得了适当的结果。现在,如果我将 fromDate 更改为 2012-01-21,商店会过滤客户端上的数据集并显示结果。这是必需的行为。如果我从日期更改为 2012 年 1 月 19 日,预期的行为是商店向服务器请求更多数据。相反,存储只是返回它在缓存中的所有数据(不包括 19 日的数据)

标签: javascript dojo


【解决方案1】:

遗憾的是,据我所知,在 dojox.data.JsonRestStore 中,所有已缓存的内容都保持缓存状态,并且您无法刷新项目或查询。您可以尝试 clearCache(),如果您稍微依赖缓存,它可能会起作用。 否则,您将不得不深入 JRS 以根据您的需要实现真正的 clearCache。 为了实现与您的需求相似的东西,您可能连接过滤器并在商店中发出完全相同的查询,并添加一个小的附加项,例如 "&date=" + (new Date().toString()) 或类似的东西来强制刷新...... 不确定它是否会完全解决您的问题,除了快速加载第一个过滤器之外,它会破坏缓存的目的。 我什至不确定强制查询是否会更新您的数据网格...但您可以尝试一下。

【讨论】:

  • 我的想法是使用缓存尽快显示每个查询的初始结果。为了真正帮助人们,缓存必须被大量使用,所以 clearCache 可能不是一个选项。
  • 然后你可能想试试我所说的关于连接到过滤器并发出新的 fetch 添加一个日期/时间戳参数到它,以便你首先加载你的缓存,然后用 fetch+date 刷新它,但我之前从未尝试过 :)
  • 我不确定这种方法是否有效,因为 URL 的 GET 参数在两个请求之间确实发生了变化(请参阅对原始问题的评论)。我的问题不是浏览器正在缓存来自服务器的响应,而是商店没有尝试从服务器获取新数据(我正在使用 Firebug 来确保)。您认为更改 URL 会有所帮助吗?
  • 我是这么认为的,因为 JRS 正在缓存查询,它永远不会再次调用服务器的原因......您的查询已经被缓存了。添加日期参数将使您的查询每次都更改(大约 ^^),并且此查询将永远不会被缓存。问题是,如何告诉 JRS 新的 resultSet 是旧 fetch 查询的新缓存?我已经很长时间没有深入研究了,所以我不确定结果和技巧,但我认为这是一个好的开始:) 如果没有,你注定要失败:P
猜你喜欢
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多