表单验证在angularJs中不起作用?

时间:2017-03-24 13:17:18

标签: javascript angularjs

我无法在AngularJS表单验证中找到错误。

JavaScript的:

sidemenu.controller('galleryCtrl', ['$scope', '$rootScope', 'PropertyDetails', '$window', '$location', '$routeParams', 'allServices', 'customVariables', '$mdDialog', function (a, b, p, $window, l, r, e, cust, md) {
  var vm = this;
  a.imageSlide = true;
  vm.user = {
    first_name: "",
    email_id: "",
    selected_id: "",
    phone: ""
  };
}]);

HTML:

<form name="register_form" novalidate="">
    <div class="form-group">
        <label>firstName{{register_form.first_name.$pristine}}</label>
        <input type="text" name="first_name" placeholder="First Name" ng-model="user.first_name" ng-required="true">
        <p ng-show="register_form.user_first_name.$invalid && !register_form.user_first_name.$pristine" class="help-block">You name is required.</p>
    </div>
    <div class="col-xs-12">
        <button type="button" ng-disabled="((!user.phone) || (!user.selected_id))" ng-click="vm.raiseEnquiry(user,selected_id)" class="sell-btn btn-action btn btn-block hpl-btn btn-default">Raise Enquiry</button>
    </div>
</form> 

我正在尝试在上面的html代码中打印这一行是{{register_form.first_name.$pristine}}而不是打印任何东西。所以我无法找到这个中的错误。

3 个答案:

答案 0 :(得分:1)

有一种更简单的解决方案可以找到表单错误。您只需添加到您的HTML代码:

<p>{{ register_form.$error }}<p>

其次,你不应该使用$invalid作为名字输入,但你应该使用register_form.user_first_name.$error.required

您还可以阅读角形表的文档 https://docs.angularjs.org/guide/forms

希望它有所帮助!

答案 1 :(得分:1)

您的数据绑定存在一些问题。

  1. 您应该修改ng-model中的input以匹配模型 你的Controller。你的ng-model="user.first_name"就是{。}} HTML在控制器中有一个名为vm.user的对象。

    所以你应该改变:

    ng-model="user.first_name"
    

    要:

    ng-model="vm.user.first_name"
    
  2. 第二个问题是,您在name="first_name"中使用input,而稍后在邮件的register_form.user_first_name中使用ng-show提及ng-show="register_form.first_name.$invalid && !register_form.first_name.$pristine" 。 / p>

    您应将其更改为:

    HTML
  3. 要在input中打印用户名,您应该引用模型对象而不是表单<label>firstName{{register_form.first_name.$pristine}}</label> ,因此您需要更改标签:

    <label>firstName {{vm.user.first_name}}</label>
    

    以下内容:

      <property name="hibernate.cache.use_second_level_cache">false</property>
        <property name="hibernate.cache.use_query_cache">false</property>
    
        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>     
    <property name="cache.region_factory">org.hibernate.cache.impl.NoCachingRegionFactory</property>
    

答案 2 :(得分:1)

使用data-ng-model值进行更改

<p ng-show="register_form.first_name.$invalid && !register_form.first_name.$pristine" class="help-block">You name is required.</p>

你也应该把它data-ng-disabled="register_form.$invalid"