我有一个使用ajax商店的树状面板。 当服务器获取节点的结果时,它通常不是瞬时的(需要几秒钟)。
我有另一个网格控件,它重新加载根节点(取决于不同的参数)
在上一个请求完成之前发送请求时,这可能会导致奇怪的行为:
我有办法在重新加载树之前中止树存储发送的所有待处理请求吗?
提前感谢您的帮助! Amitay。
P.S - ExtJS 4.1.1版
答案 0 :(得分:1)
将数据添加到树存储是一项棘手的工作。该框架执行许多操作,以便在每次将数据加载或加载到树存储中时保持对齐。例如,尝试将记录添加到树存储中,该存储已存在于其他位置的树中。如果记录的ID是持久的(意味着从服务器设置),那么所有的记录都会松动。这是因为树存储具有复杂的机器并且可能不适合所有用例。
所以难怪如果两个竞争请求尝试将数据加载到树存储中,事情将无法正常工作。 可以做些什么?
加载蒙版。扩展树分支时,加载掩码应覆盖树以隐藏任何其他控件。这有助于避免并发数据操作。在4.1.1中,这实际上有效OOTB(以前被打破过)。
如果您允许外部控件影响树,请查看“loading”属性http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-property-loading。检查加载应该阻止其他操作继续进行。如果需要,数据连接上有一个“中止”方法来取消待处理的请求。
最后查看数据连接上的autoAbort属性:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Connection-cfg-autoAbort这将终止所有其他待处理请求,可能就是您要查找的内容。