我有一个相当先进的TabPanel
我正在开发的向导,我似乎无法让它正常运行。基本上,我有4个选项卡...每个选项卡都是自己的形式,因为选项卡需要对其自身进行验证,因此它可以确定是否需要禁用其右侧的选项卡,或者是否应启用下一个选项卡。高级选项卡面板向导
我遇到的主要问题是非呈现标签认为它是有效的,实际上,它的字段设置为allowBlank: false
,并且它有一个空值。然后是相反的,我设置了一个值,但它认为它是无效的。
另一个怪癖是,我必须在调用面板加载时调用this.getViewModel().notify()
...否则,当我检查初始有效性时,我激活的表单认为它是无效的......尽管如此,我认为这与绑定有关延迟,所以我现在可以处理这个。
我可以使用deferredRender: false
来解决这个问题,但我不想,因为在我的实际应用程序中,这些选项卡在每个选项卡上都有点不同,所以这不是很高效。
In my Fiddle,你会看到3个选项卡启用,实际上,它应该已经启用了4个选项卡,因为第3个选项卡有来自其模型的数据,但该选项卡认为它无效。由于该标签认为它是无效的,因此我重新启动了我的checkValidity方法,因为我检查isValid是否为false(这是为了禁用右侧的任何标签,如果当前标签变为无效,并且用户被迫继续,这是设计)。在控制台:
- TAB3认为这是无效的,因为它被设置为 allowBlank这是不正确的:假的,但它绑定了一个值
- TAB4会认为它是有效的,这是不正确的,因为它设置为allowBlank:false并且没有值
有没有人有任何见解?我是否在谈论这个可怕的错误?
感谢您浏览整个调试过程......这正是我所想的。但是,事情就是这样,如果表单有一个allowBlank字段:false和一个空值,那么这个表单就不应该是有效的......这真的很奇怪。按照设计,这应该说它是无效的,所以tab4也应该是无效的。错误为true的问题在于它会触发很多次(由于isValid被调用),并且它不是所需的行为,因为其他选项卡可能在选项卡变为无效后启用。 – incutonez
表单对于空值不允许有空值的字段无效。这就是为什么tab3无效。问题在于表单在构建和呈现之前根本没有字段。并且_zero_字段的表单有效。 –
罗伯特,使用该逻辑,tab3尚未呈现,所以它应该仍然有效。 – incutonez