2017-01-03 8 views
0

フォームを検証しようとしていますが、フィールドが有効な場合は、データをDBに送信しないようにするには、データをDBに送信する必要があります。私がエラーTypeError: Cannot read property '$valid' of undefinedを得るフォームを提出するとき、私はそれを克服する方法を知らない、これで助けが必要です。anglejsを使用したフォーム検証

HTML:

<form name="formvalidation"> 
<ion-view ng-controller="ValidationCheck"> 
<ion-content> 
<div> 
<strong>User:</strong> <br/> 
<input ng-model="name" type="text" name="name" required/> 
<ng-messages for="formvalidation.name.$error" ng-if="formvalidation.name.$invalid"> 
<div ng-messages-include="error/validation.html"></div> 
<ng-messages> 
</div> 
</from> 
<button ng-click="check()"> 

コントローラ:

myApp.controller('ValidationCheck',function($scope, applicationService) 
{ 
$scope.check=function(formvalidation){ 
var name={'name'=$scope.name}; 
$scope.submitted=true; 
if(formvalidation.$valid){ 
applicationService.save(name,$scope.home); 
}}}); 

答えて

1

var name = {'name': $scope.name };にちょうどあなたの条件formvalidation.$valid場合にformvalidation を変更

  • は、あなたがして、 "=" に変更する必要があります。あなたの機能に既にformvalidation.$validをng-clickで渡したので、

    if(formvalidation){ 
    ... 
    ... 
    ... 
    
    } 
    
  • 0

    削除NGクリックして、提出NGを追加します。

    <form name="formvalidation" ng-submit="check()" novalidate> 
    
    0

    はこれを試してみてください(コントローラーfの前にあなたのHTML内ORM)

    <ion-view ng-controller="ValidationCheck"> 
         <form name="formvalidation"> 
    
    0

    あなたが持っている:

    <button ng-click="check(formvalidation.$valid)"> 
    

    フォームが有効であるか否かに応じて、trueまたはfalseの値(ブール値)とチェック機能を呼び出します。あなたはif文以下でチェック機能を持っているあなたのコントローラで

    if(formvalidation.$valid) 
    

    しかしformvalidationはブール値です(trueまたはfalse)

    私がチェックし、単にアクセスから引数を削除するお勧めします$ scope変数のformvalidationプロパティ。

    ので、HTMLは

    <button ng-click="check()"> 
    

    なり、コントローラは

    $scope.check=function(){ 
        var name={'name'=$scope.name}; 
        $scope.submitted=true; 
        if($scope.formvalidation.$valid) { 
         applicationService.save(name,$scope.home); 
        } 
    } 
    
    0

    <form>がコントローラ宣言

    <div ng-app="app"> 
        <ion-view ng-controller="ValidationCheck"> 
        <form name="formvalidation"> 
         <ion-content> 
    

    var app = angular.module("app", []); 
     
    app.controller('ValidationCheck', function($scope) { 
     
        $scope.check = function(formvalidationBoolean) { 
     
        alert(formvalidationBoolean); 
     
        var name = { 
     
         'name': $scope.name 
     
        }; 
     
        $scope.submitted = true; 
     
        if (formvalidationBoolean) { 
     
         //applicationService.save(name, $scope.home); 
     
        } 
     
        } 
     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
     
    
     
    <div ng-app="app"> 
     
        <ion-view ng-controller="ValidationCheck"> 
     
        <form name="formvalidation"> 
     
         <ion-content> 
     
         <div> 
     
          <strong>User:</strong> 
     
          <br/> 
     
          <input ng-model="name" type="text" name="name" required/> 
     
          <ng-messages for="formvalidation.name.$error" ng-if="formvalidation.name.$invalid"> 
     
          <div ng-messages-include="templates/admin/validation.html"></div> 
     
          <ng-messages> 
     
         </div> 
     
         </from> 
     
         <button ng-click="check(formvalidation.$valid)">Submit</button> 
     
    </div>
    後に来るべきでなります

    1. あなたはブール値"ng-click="check(formvalidation.$valid)"を送信している、だから、コントローラ内部のあなたの声明if(formvalidation.$valid){が間違っています。 ":"
    関連する問題