Angular:将多个值传递给控制器

时间:2015-09-21 23:47:06

标签: angularjs input

让我说我有一个下拉淹没列表,我在我的html模板中动态添加:

<button type="button" ng-click="addRow()" style="margin-bottom:5px;">Add cities </button>
    <div ng-repeat="city in cities">
     <select ng-model="cities_$index"
          ng-options="n.id as n.name for n in citiesList"
          class="form-control"
         ng-required="true">
    <option value="">-- Choose City --</option>
                                </select>
    </div>

角度控制器:

$scope.addRow = function () {
 var newrow = [];
 if ($scope.cities.length === 0) {

                newrow.push({ 'cities': $scope.cities_0 });
            }
            else {
                $scope.cities.forEach(function (row, key) {

                    var city= '$scope.cities_'+key; // in php i can do this
//but i dont know how to do it with Js/Angular

                    console.log('row' + city);

                    newrow.push({ 'cities': city});

                    console.log(newrow);
                });
            }
 $scope.cities.push(newrow);
}

我试过这个从所选城市中检索值,但我有未定义的值。

$scope.send = function () {

          angular.forEach($scope.cities, function (value, key) {

                console.log(value.id); // the id from the ng-options
        };

在常规的html代码中,我只需添加name="city",然后检索输入框中添加的所有城市。但是我如何从控制器中的ng-model中检索出城市?

我知道自己做错了什么,但是因为我是一个有角色的新人,我试过!!

谢谢

2 个答案:

答案 0 :(得分:0)

假设密钥(城市)在您的数据阵列中,您可以这样做:

<div ng-repeat="data in datas">
 <input type="text">{{data.name}}
</div>

答案 1 :(得分:0)

ng-model仍然是独一无二的。你在这里缺少的是ng-repeat为每个项目创建一个子范围。因此,ng-model的值对于每个子范围都是唯一的。 ng-model的行为与纯HTML输入的行为不同,并且具有相同ng-model的多个输入仅指向内存中的同一对象。而不是像在纯HTML输入中所期望的那样,将“累加”值添加到属性城市。

如果您在datas中使用对象ng-repeat,则<input />绑定到datas的商品属性是一种常见做法。

<div ng-repeat="data in datas">
    <input type="text">{{data.city}}
</div>