DojoX中的JsonRestStore加载同样的事情多次(Dojox's JsonRest

2019-09-26 21:20发布

我使用的Web应用程序项目延迟加载树; 但是,我碰到一些奇怪的行为。 似乎只有3个级别的一个简单的树引起的根部结构7名的请求。 看官方JRS树测试之后,我不知道这是否正常。

看看这个例子: http://download.dojotoolkit.org/release-1.6.1/dojo-release-1.6.1/dijit/tests/tree/Tree_with_JRS.html

当我访问它,我的浏览器,使根的结构5个请求。 我唯一的问题是为什么呢?

编辑 :值得一提的是,这并不与道场1.5或以下发生。

下面是它看起来像在检查器(Chrome):

Answer 1:

终于我发现道场利益解决这个问题,感谢这个帖子: thisisalink 。

基本上,使用Dojo 1.6的dijit.tree.ForestStoreModel用一些新的钩状功能(我猜是因为用的TreeGrid所做的工作)扩展。 其中的一个, onSetItem一旦树节点展开被称为(因此会形式预加载使用惰性加载店时,满载)。 在基本实现,这个函数调用_requeryTop()这再次查询所有根项目。

我们的应用程序,我们可以简单地替换dijit.tree.ForestStoreModel与我们的实现digicult.dijit.tree.ForestStoreModel ,其中onSetItemonNewItem不叫this._requeryTop

可悲的是它是不够的子类ForestStoreModel,因为有this.inherited(arguments); 电话中不能轻易更换的功能,所以我们不得不复制整个类(副本类,重命名,注释掉两行 - 在很长一段时间:-)最简单的解决) - 这可能迫使我们重新设计类我们再次更新道场一个更新的版本。



Answer 2:

我也有过用10000+节点树时,一次全部装在最高层所面临的性能问题的dijit树,用〜3000项。 树只有一个,它加载在通过Ajax调用第一次点击整个树虚拟根节点。

在这种情况下,树创建了超过1分钟加载,我得到了“停止运行此脚本”对话框弹出的IE8。

将几个优化步骤后,树现在所有主流浏览器在2秒钟内加载(包括IE8-IE11)。

我用的是所做的第一个优化dijit/tree/ObjectStoreModel作为树的模型和dojo/store/Memory作为数据存储。

这加快了插入Ajax响应JSON节点到树的数据存储。

第二个优化有关创建慢的树的节点。 这花了更多的努力来解决:

我不得不延长dijit/Tree和覆盖setChildItems()函数(它的一部分调用_createTreeNode()函数)。

我不停的整个逻辑setChildItems()不变,只是增加了使用该技术创建树节点的并行化:

http://www.picnet.com.au/blogs/Guido/post/2010/03/04/How-to-prevent-Stop-running-this-script-message-in-browsers.aspx

希望它能帮助,如果需要的话,我可以张贴我的解决办法的源代码



文章来源: Dojox's JsonRestStore loading the same thing several times