【问题标题】:I'm trying to get form validations to work with an Angular Wizard我正在尝试让表单验证与 Angular 向导一起使用
【发布时间】:2026-01-25 14:50:01
【问题描述】:

我正在为我的应用注册过程使用 Angular 向导。

角度向导 - https://github.com/mgonto/angular-wizard

但是,无论我尝试什么,向导的每一步都不允许进行表单验证(这基本上是开箱即用的 Angular 以及使用 FormController 和 $error 对象的表单。

我已经在项目的问题页面上发布了有关表单验证的信息,但我没有收到项目所有者或任何其他用户提供的工作代码示例,所以我希望这里的一些更高级的用户可以提供帮助。

哦,为了帮助隔离问题,我只在我的 jsfiddles 中包含了第一步的 html。

验证问题 - https://github.com/mgonto/angular-wizard/issues/41

验证问题页面链接到我的 jsfiddles 和其他工作。

这是范围界定问题吗????如果是这样,我该如何解决?目前,当我单击“下一步”按钮时,它只是通过向导进行,当我尝试将 $error 对象发送到控制台时,我得到的只是“未定义”。

Angular 文档(表单属性和对 $error 的引用)-https://docs.angularjs.org/api/ng/type/form.FormController

【问题讨论】:

    标签: javascript angularjs forms validation


    【解决方案1】:

    这绝对是一个范围界定问题。通过进入子元素的范围(在控制器中)并将视图(html)中的变量定义为 $parent 元素的一部分,我能够让事情发挥作用。这意味着所有变量都在 HTML 中设置为

    ng-model="$parent.variableName";
    

    从控制器更改此变量的值需要如下调用:

    $scope.$$childTail.variableName = 'something that you want to change the value to';
    

    但是进入 $$childTail 是不行的。如果你问我,整个项目都需要重新设计以解决范围界定问题。如果修改后的项目使用典型角度数据绑定之外的任何内容,则需要有关于如何访问验证变量的文档。

    我的解决方案代码附在下面的要点中。

    控制器设置 https://gist.github.com/Shawful/a4f8ff5097eabc5306f4

    HTML 设置 https://gist.github.com/Shawful/f8dc97d6fd88bbb111f9

    【讨论】:

      【解决方案2】:

      我认为您的部分问题是您的 ng 模型上缺少点符号。一般来说,你想要 ng-model="container.piece"。如果您的模型中不包含点,则有许多关于写入子范围问题的文章。看看Understanding scopes

      【讨论】:

      • 这通常是正确的,但正如@Shawesome 所说,这是这个库的一个主要问题。
      最近更新 更多