Dijit Form isValid returns false while validate returns true after destroyed a descendant

Dijit Form isValid returns false while validate returns true after destroying a descendant

我在使用 dijit 1.11. 完成的表单时遇到了一个非常奇怪的问题,在这种情况下,表单中有几个 dijit/layout/ContentPane,而表单本身是 TabContainer.在提交之前,根据一些规则,通过在其中调用 destroyRecursive 来删除一些窗格。问题是,表单仍然没有提交。

进一步检查,validate() 方法 return 为真但 isValid return 为假,这就是提交未触发的原因。检查isValid方法,我发现窗体的_descedents 属性没有清除我销毁子窗格时递归销毁的小部件。其中一些小部件的状态为未完成,这使得 isValid return 为假(尽管验证 return 为真)。

这是怎么回事,我该如何解决?

我会尝试 post 一个 jsFiddle 后者更好地解释错误,但作为解决方案,您需要在销毁 ContentPane 后调用 Form connectChildren() 方法,这会重新创建 _descendants 数组,使 isValid 函数只检查现有元素