角度验证有问题

时间:2014-10-19 07:43:09

标签: javascript angularjs forms validation

我是Angular的新手,无法调试我对表单验证的使用。即如果表单无效,我想禁用sumbit按钮。我的问题是,即使我插入了明显有效的输入,它仍然无效。这甚至对于空表格甚至无效:

这是我的模板(原始代码已注释掉):

<div>
    <div class="row">
        <div class="col-xs-6">
            <a href ng-click="companiesCtrl.newEdit()" class="btn btn-primary">Uus asutus</a>
            <table class="table">
                <tbody>
                <tr ng-repeat="company in companiesCtrl.list">
                    <td><a href ng-click="companiesCtrl.load(company)">{{company.name}}</a></td>
                </tr>
                </tbody>
            </table>
        </div>
        <div class="col-xs-6">
            <form id="editForm">
            <!--<form ng-show="companiesCtrl.showEdit()" ng-submit="companiesCtrl.save()" name="editForm">-->
                <!--<h4>Asutuse detailid</h4>-->
                <!--<a ng-show="companiesCtrl.edit.id != 0" class="btn btn-primary" ng-href="../{{companiesCtrl.edit.id}}/product/list">Asutuse vaatele</a>-->
                <!--<fieldset class="form-group">-->
                    <!--<input  ng-model="companiesCtrl.edit.id"/>-->
                <!--</fieldset>-->
                <!--<fieldset class="form-group">-->
                    <!--<input placeholder="Asutuse nimi" title="Asutuse nimi" ng-model="companiesCtrl.edit.name" ng-required="true"/>-->
                <!--</fieldset>-->
                <!--<fieldset class="form-group">-->
                    <!--<input type="submit" class="btn btn-success" ng-disabled="editForm.$invalid" value="Salvesta" />-->
                <!--</fieldset>-->
            </form>
            <span>{{editForm.$error}}</span>
            <span>{{editForm.$invalid}}</span>
            <span>{{editForm.$valid}}</span>
        </div>
    </div>

这是&#34; span&#34; -s:

的结果
{"required":[{}]} true false

我的问题是,正如我对Angular的新手,如何调试它,或者影响表格的其他因素是什么?有效的&#34;状态。

1 个答案:

答案 0 :(得分:0)

我自己找到了问题。我有多个指令被ng-show隐藏了。所有这些都有一个名为“editForm”的表单,这导致Angular验证所有表单。

如果有人需要这个用于调试:我在我的模板中添加了以下内容:

<span ng-repeat="error in compForm.$error"><span ng-repeat="error2 in error">
                {{companiesCtrl.logThis(error2)}}</span></span>

以及我的控制器的以下内容:

this.logThis = function(toLog) {
                console.log(toLog);
            }

从日志中我看到它验证了太多次,并质疑我的问题。