Dijit表单在其中使用mvc Group时停止验证

时间:2014-12-22 16:45:25

标签: model-view-controller dojo

我有一个页面,它使用dijit / form / Form来验证其中的所有表单小部件。

如果我将小部件直接放在Form(标记)下,验证可以正常工作。

一旦用dojox / mvc / Group(在表单中)包围小部件,表单验证完全停止,当我调用Form :: validate()时,没有任何小部件似乎验证。

调试Dojo代码显示嵌套窗口小部件在表单中永远不会被视为可验证,因此当我使用Group包围窗口小部件时,它们将被排除在验证之外。

有解决方法吗?

2 个答案:

答案 0 :(得分:1)

来自dijit/form/_FormMixin#_getDescendantFormWidgets()dijit/_WidgetBase#getChildren()

AFAICT,可以通过将data-dojo-mixins="dijit/_Container"添加到具有data-dojo-type="dojox/mvc/Group"的元素来解决此问题。

另外(尽管我不确定它是否符合您的要求),dojox / mvc / tests / test_mvc_new_loan-stateful.html示例显示了带有dojox / mvc的表单验证解决方案。

希望它有所帮助。

Best,Akira

答案 1 :(得分:0)

似乎没有简单的方法可以用dijit / form / Form来解决这个问题。至少应该对它进行子类化或猴子修补,以使其考虑嵌套小部件。

但是,似乎dojox / form / Manager正确处理嵌套小部件,所以我已切换到它。

切换到Manager需要进行一些重构,因为它无法简单地转换为具有dom-form的对象(dijit / form / Form可以转换)。

以前的HTML代码:

  <div
    id="_pg_detailForm"
    data-dojo-type="dijit/form/Form"
    encType="multipart/form-data" 
    action="" method=""
  >
    ... form widgets (surrounded with MVC Groups...etc)
  </div>

后:

  <form id="_pg_detailForm">
    <div
      id="_pg_detailFormManager"
      data-dojo-type="dojox/form/Manager"
    >
      ... form widgets (surrounded with MVC Groups...etc)

    </div>
  </form>