javascript - 以 Angular 保存对象数组

标签 javascript angularjs angularjs-ng-repeat angular-ngmodel ng-submit

嗨,我正在尝试组合下一个对象

$scope.passengers = { 成人:[ {名字:“名字”,姓氏:“另一个名字”},{名字:“名字”,姓氏:“另一个名字”},{名字:“名字”,姓氏:“另一个名字”}], child :[ {名字:“名字”,姓氏:“另一个名字”},{名字:“名字”,姓氏:“另一个名字”},{名字:“名字”,姓氏:“另一个名字”}], 额外内容:“someValue”};

在我的 Controller 中,我有以下内容

$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> 

但是,当我打印变量“passenger”时,控制台显示:Object {extras: "someValue"}

最佳答案

您的问题是 ng-repeat 创建了一个隔离的范围,因此您的输入字段未反射(reflect)在正确的范围中。这可以通过正确填写您的 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">

对 child 区做同样的事情。

关于javascript - 以 Angular 保存对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32791700/

相关文章:

html - 通过以列方式设置数据从 REST 对象创建表

javascript - 如何纠正AngularJS中的分页

javascript - AngularJS ng-repeat with ng-bind-html 在数组中呈现 HTML 字符串?

javascript 正则表达式,我做错了什么?

javascript - 宽度切换动画 - 毛刺效果

javascript - 在按钮或 div 外部单击时隐藏按钮

java - 如果没有为 Windows 上的 Chrome 23 安装 java 插件,则 navigator.javaEnabled() 返回 true

javascript - 公开 View 状态的 AngularJS 指令

javascript - Angular 性能 - 过滤器与函数表达式

javascript - 使用 ng-repeat 和 ng-model 调用 splice() 时 Angular 重定向到主页