如何在Dojo中调用一个函数(非 AJAX ),然后再调用另一个函数(非AJAX)?

q43xntqr  于 2022-12-16  发布在  Dojo
关注(0)|答案(4)|浏览(155)

这不是 AJAX 请求/响应回调问题...
我正在使用Dojo 1.5构建一个网格。我尝试使用一个函数来扩展/收缩dojo.connect按钮。我的问题是,grid.startup()方法在被调用之后似乎需要一段时间才能创建实际的DOM节点,因此当我调用dojo.query时,我想要连接事件和处理程序的DOM节点都不存在。
我在init()方法中创建网格,dojo.addOnLoad()调用该方法,connectExpandos()方法通过dojo.connect("init", connectExpandos);连接到init()。这执行得很好,但我需要在while循环中执行setTimeout(),以等待grid.startup()完成...
有人知道更好的方法吗?也许是一个grid.startup()回调我可以挂钩?

anhgbhbe

anhgbhbe1#

另一个建议...看起来像是“startup”函数,它是在DataGrid的超类_Grid(http://svn.dojotoolkit.org/src/dojox/trunk/grid/* Grid.js*)中实现的,调用了一个名为render的函数,我相信它实际上是呈现网格的内容。随后,看起来像是render在完成呈现之后调用了一个方法“postrender”。也许你可以将你的方法连接到“postrender”方法,而不是“startup”。

dojo.connect(grid, "postrender", function(){connectExpandos()})
9fkzdhlc

9fkzdhlc2#

我认为您要查找的回调是_onFetchComplete

dojo.connect(grid,'_onFetchComplete',function(event){
    alert("hello data is loaded")
});
5sxhfpxr

5sxhfpxr3#

我想你可以把一个事件和网格启动方法联系起来

dojo.connect(grid, "startup", function(){connectExpandos()})

字符串

mpgws1up

mpgws1up4#

您可以尝试以编程方式创建小部件(假设您还没有),然后在调用startup()之后调用方法(手动调用startup()似乎有点奇怪,但源代码注解中的示例显示了手动调用grid.startup())。

<script type="text/javascript">
   var grid = new dojox.grid.EnhancedGrid({plugins : {nestedSorting: true, dnd: true, indirectSelection: true, 
   menus:{headerMenu:"headerMenuId", rowMenu:"rowMenuId",  cellMenu:"cellMenuId",selectedRegionMenu:"selectedRegionMenuId"}},
   ... }, dojo.byId('gridDiv'));
   grid.startup();
   connectExpandos();
</script>

相关问题