2014-10-02 64 views
0

我正在为我的应用程序的注册过程使用角度向导。我想要获得表单验证以使用角度向导

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

但是,不管我怎么努力,在向导的每一步都是不允许的表单验证(这基本上出来与角的盒子,并与的FormController使用形式和$ error对象

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

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

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

验证问题的网页链接到我的jsfiddles和其他努力。

这是一个范围问题?如果是这样,我该如何解决它?目前,当我点击Next按钮时,它只是向前推进,当我尝试将$ error对象发送到控制台时,我所得到的只是“未定义”。

角文档(表单属性和参考$错误) - https://docs.angularjs.org/api/ng/type/form.FormController

回答

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

0

我觉得你的问题的一部分是缺乏对你的NG-模型点号的。一般来说,你想ng-model =“container.piece”。如果您的模型中没有包含点,则有许多关于写入子范围的问题。看看Understanding scopes

+0

这通常是正确的,但作为@Shawesome提到这是这个库的一个主要问题。 – 2016-11-08 19:30:52