2015-09-25 2 views
0

Привет Я пытаюсь собрать следующий объектСохранить массив объектов в угловом

$ scope.passengers = { взрослых: [{имя:: «Название», фамилия: «anothername»}, { firstname: «name», lastname: «othername»}, {firstname: «name», lastname: «othername»}], child: [{firstname: "name", lastname: "anothername"}, {firstname: " name ", lastname:" othername "}, {firstname:" name ", lastname:" othername "}], Дополнительные услуги:" someValue "};

В моем контроллере я следующее

$scope.passengers = {}; 
$scope.passengers.adult = []; 
$scope.passengers.child = []; 
$scope.numberAdult = 10; 
$scope.numberChildren = 10; 
Y las funciones 
//Functions return an array null 
$scope.getNumber = function(num) { 
    num = parseInt(num); 
    return new Array(num); 
}; 
$scope.savePassengers = function(product_id) 
{ 
    //for the moment only print the variable 
    console.log($scope.passengers) 
} 

В Моем HTML странице

<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 by $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 by $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 to Cart -> 
         </button>                                  
        </div> 
       </div>     

      </div> 
     </div> 

    </div>  
    <div class="clearfix"></div> 
</form> 

Но, когда я напечатать переменный "пассажир", консольное шоу: Object {extras: "someValue"}

+0

предлагаю вам создать демоверсию, которая воспроизводит это. Это не очевидно, где проблема может быть – charlietfl

ответ

1

Ваших проблема заключается в том, что ng-repeat создает изолированную область видимости, поэтому поля ввода не отражаются в правильной области. Это может быть дополнительно подтверждено правильным выполнением вашего поля extras.

Вы должны изменить эти строки в 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"> 

И сделать то же самое для области детей.

+0

Спасибо, да это работает – Walter