2017-08-02 66 views
0

我擴展了一個用HTML和AngularJS編寫的Web表單。一些註冊信息填入表格後,表格必須消失,同時必須出現確認的div。註冊後隱藏表單工作正確,但顯示已確認的div不起作用,因爲conformationShown未定義,而此變量以與formHidden相同的方式聲明。這些變量在文件「labController.js」中聲明。AngularJS中的第二個變量未定義,但以相同的方式聲明

的index.html

<!DOCTYPE html> 
<html ng-app="app"> 

<head> 
    <title>Tony's Pizza - New User Registration</title> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" 
      crossorigin="anonymous"> 
</head> 

<body ng-controller="labController"> 
    <div class="container"> 
     <h1>New User Registration</h1> 

     <form ng-hide = "formHidden" class="form-horizontal" name="form" novalidate> 
      <div class="form-group"> 
       <div class="col-md-2"> 
        <label>Username</label> 
       </div> 
       <div class="col-md-5"> 
        <input type="text" name="username" class="form-control" ng-model="model.username" required> 
        <div class="alert alert-danger" ng-show="(form.username.$touched || form.$submitted) && form.username.$error.required"> 
         Username is required 
        </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-md-2"> 
        <label>Password</label> 
       </div> 
       <div class="col-md-5"> 
        <input type="password" name="password" class="form-control" ng-model="model.password" required> 
        <div class="alert alert-danger" ng-show="(form.password.$touched || form.$submitted) && form.password.$error.required"> 
         Password is required 
        </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-md-2"> 
        <label>Name</label> 
       </div> 
       <div class="col-md-5"> 
        <input type="text" name="name" class="form-control" ng-model="model.name" required> 
        <div class="alert alert-danger" ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required"> 
         Name is required 
        </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-md-2"> 
        <label>Phone Number</label> 
       </div> 
       <div class="col-md-5"> 
        <input type="number" name="phone" class="form-control" ng-model="model.phone" ng-required="true"> 
        <div class="alert alert-danger" ng-show="(form.phone.$touched || form.$submitted) && form.phone.$error.required"> 
         Phone is required 
        </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-md-2"> 
        <label>Email Address</label> 
       </div> 
       <div class="col-md-5"> 
        <input type="email" name="emailAddress" class="form-control" ng-model="model.email" ng-required="true"> 
        <div class="alert alert-danger" ng-show="(form.emailAddress.$touched || form.$submitted) && form.emailAddress.$error.required"> 
         Email Address is required 
        </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-md-2"> 
        <label>Favorite Pizza</label> 
       </div> 
       <div class="col-md-5"> 
        <select name="favorite" class="form-control" ng-model="model.favorite" ng-required="true"> 
         <option>Cheese Pizza</option> 
         <option>Pepperoni Pizza</option> 
         <option>Margherita Pizza</option> 
         <option>BBQ Chicken Pizza</option> 
         <option>Combo Pizza</option> 
        </select> 
        <div class="alert alert-danger" ng-show="(form.favorite.$touched || form.$submitted) && form.favorite.$error.required"> 
         Favorite is required 
        </div> 
       </div> 
      </div> 
      <div ng-show = "conformationShown" class="alert alert-success"> 
       Confirmed! 
      </div> 
      <div class="form-group"> 
       <div class="col-md-offset-2 col-md-5"> 
        <input type="submit" value="Submit" class="btn btn-primary" ng-click="submit(model)" ng-disabled="form.$invalid" /> 
        <button class="btn btn-default">Reset</button> 
       </div> 
      </div> 
     </form> 

     <pre>{{model | json}}</pre> 
    </div> 

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-resource.min.js"></script> 
    <script src="/app/registrationService.js"></script> 
    <script src="/app/app.js"></script> 
    <script src="/app/labController.js"></script> 
</body> 

</html> 

labController.js

app.controller('labController', [ 
    '$scope', 'registration', 
    function ($scope, registration) { 

     var formHidden = false; 
     var conformationShown = false; 

     $scope.formHidden = formHidden; 
     $scope.conformationShown = conformationShown; 
     $scope.reset = reset; 
     $scope.submit = submit; 

     reset(); 

     function submit(model) { 
      registration.submit(model).$promise 
       .then(function (response) { 
        alert('User registered'); 
        $scope.formHidden = true; 
        $scope.conformationShown = true; 
        console.log(conformationShown); 

       }, 
       function (response) { 
        alert('An error occured'); 
       }); 
     } 

     function reset() { 
      $scope.model = {}; 
     } 
    } 
]); 

registrationServices.js

angular.module('registrationService', ['ngResource']). 
    factory('registration', [ 
     '$resource', 
     function ($resource) { 
      return $resource('https://reqres.in/api/register', 
       {}, 
       { 
        submit: { 
         method: 'POST' 
        }, 
       }); 
     } 
    ]); 

app.js

var app = angular.module('app', 
    [ 
     'ngResource', 
     'registrationService' 
    ] 
); 
+2

但是你的成功警報_inside_您的形式,當然當窗體消失,它會被隱藏。 – Und3rTow

+0

你能爲同樣的創建plunkr嗎? – Deepa

+1

你的「formHidden」被設置爲true,這將隱藏你的表單,你的成功div在這個表單內,我猜這也會被隱藏。den – Deepa

回答

1

您需要將您的成功警告表單之外:

<form ng-hide = "formHidden" class="form-horizontal" name="form" novalidate> 
    ... 
</form> 

<div ng-show = "conformationShown" class="alert alert-success"> 
    Confirmed! 
</div> 

Eample Plunkr