javascript - Save an array of objects in angular -


hi i'm trying put next object

$scope.passengers = { adult : [ {firstname: "name", lastname: "anothername"},{firstname: "name", lastname: "anothername"},{firstname: "name", lastname: "anothername"}], child : [ {firstname: "name", lastname: "anothername"},{firstname: "name", lastname: "anothername"},{firstname: "name", lastname: "anothername"}], extras : "somevalue"} ;

in controller have following

$scope.passengers = {}; $scope.passengers.adult = []; $scope.passengers.child = []; $scope.numberadult = 10; $scope.numberchildren = 10; y las funciones //functions return array null $scope.getnumber = function(num) {     num = parseint(num);     return new array(num);    }; $scope.savepassengers = function(product_id)  {     //for moment print variable     console.log($scope.passengers)  } 

in html page

<form name="passengers-form" ng-submit="savepassengers(product.id)">             <div class="col-lg-12">          <div class="form-horizontal">             <div class="row">                 <div class="form-group"  ng-repeat="a in getnumber(numberadult) track $index">                     <label class="col-sm-3 control-label">adult {{$index + 1 }}</label>                     <div class="col-sm-3">         <input  required  ng-model="passengers.adult[$index].firstname" class="form-control" placeholder="first name" type="text">                     </div>                      <div class="col-sm-3">                             <input  required ng-model="passengers.adult[$index].lastname" class="form-control" placeholder="last name" type="text">                     </div>                 </div>                  <div class="form-group"  ng-repeat="a in getnumber(numberchildren) track $index">                     <label class="col-sm-3 control-label">child {{$index + 1 }}</label>                     <div class="col-sm-3">                             <input  required ng-model="passengers.child[$index].firstname"  class="form-control" placeholder="first name" type="text">                     </div>                      <div class="col-sm-3">                             <input  required  ng-model="passengers.child[$index].lastname" class="form-control" placeholder="last name" type="text">                     </div>                 </div>                   <div class="form-group">                     <label class="col-sm-3 control-label">extras</label>                     <div class="col-sm-6">                             <textarea name="" ng-model="passengers.extras"class="form-control" id="" cols="30" rows="10"></textarea>                     </div>                 </div>                   <div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">                      <div class="form-group buttons pull-right">                                                                                           <button class="btn btn-primary" id="guardar" type="submit">                             <i class="fa fa-save"></i>add cart ->                         </button>                                                                                                                                                            </div>                 </div>                                </div>         </div>      </div>           <div class="clearfix"></div> </form>  

but, when print variable "passenger" , console show : object {extras: "somevalue"}

your problem ng-repeat creates isolated scope, input fields not reflecting in correct scope. can further verified extras field being fulfilled.

you should change these lines in html:

<input  required  ng-model="$parent.passengers.adult[$index].firstname" class="form-control" placeholder="first name" type="text"> ... <input  required ng-model="$parent.passengers.adult[$index].lastname" class="form-control" placeholder="last name" type="text"> 

and same thing children area.


Comments