如何使igniteui dataSource 2013.2使用本地浏览器缓存?

时间:2016-04-13 11:21:53

标签: infragistics ignite-ui igdatasource

我需要在两种情况下创建REST数据源:

  1. 当本地浏览器缓存中没有任何内容时 - 通过ds.dataBind()
  2. 的标准方式
  3. 当有东西时 - 通过预先加载之前缓存的json结果。
  4. 浏览器缓存可以通过任何浏览器缓存。我更喜欢localForage

    有没有办法通过公共API将json数组在创建之后和databind()之前推送到REST ds中,以防止任何初始GET /数据绑定调用?

2 个答案:

答案 0 :(得分:2)

igDataSource没有内置任何内容来处理请求中的缓存数据。我的建议是利用jQuery.ajaxSetup拦截请求并使用缓存数据(如果存在于localStorage或其他任何地方。

$.ajaxSetup({
    beforeSend: function (jqXHR, settings) {
        // return from local storage instead of initiating the request
    }
});

答案 1 :(得分:1)

我得出的结论是,不可能这样做(在$ .ajax级别),因为从beforeSend返回不会取消请求。另一方面,中止请求(jqXHR.abort())中止整个请求管道,该管道中止所有其他$ .ajax回调的执行,这是一个死胡同 - 然后中止整个dataSource管道阻止我获得任何结果。

目前唯一的解决方案是在创建网格期间创建不同类型的dataSource(JSON ds)(在我的例子中,这些是组合的ds)。

<强>更新 这根本不可能,但是包含方法_remoteData-&gt; _processRequest-&gt; _successCallBack-&gt; CompleteCallBack的管道必须在像类这样的状态机中抽象出来。问题来自于这样一个事实,即状态机是通过$ .ajax实现的,这种情况并没有真正考虑到这种情况并且黑客攻击它并不是一个好主意。

如果有一个轻量级的js状态机库,就可以完成它。