ng-repeat输入复选框中的Ng-model属性始终为字面值或给出错误

时间:2013-07-22 12:10:00

标签: angularjs checkbox model angularjs-ng-repeat

所以我需要知道汽车的额外内容,而不是用户希望包含在他的偏好中。 我正在尝试从ajax请求获取的数组创建输入复选框,并通过ng-repeat生成输入。主要目标是了解用户选择的复选框。我想我的方法是创建一个辅助数组,其中包含选定的数组,但我不知道如何为ng-repeat迭代中的每个项设置一个唯一的ng模型,这样我就可以知道所选的列表项目。我想我的角度知识还有一些东西。这就是我现在所拥有的......

在控制器......

$http.get('/ajax/ajax_get_extras/'+$scope.car.version+'/false').success(function(data) {
                $scope.extras = data;
         });  
$scope.addExtra = function(){ // ... manage the auxiliar array }

在html中......

<div ng-controller="Controller">
        <form novalidate class="simple-form">
            <span ng-repeat="extra in extras">
                <input  type="checkbox" ng-model="extra.id" ng-change="addExtra()" name="extra_{{extra.id}}" >{{extra.name}} - <strong>{{extra.real_price | onlynumber | currency}}</strong>
            </span>
        </form>
</div>

我被困了,因为extra.id没有转换为真正的extra.id并保持为字符串“extra.id”&gt; _&lt;

我尝试额外_ {{extra.id}} extra.id {{extra.id}} $ index as posibles ng-model,无效。

1 个答案:

答案 0 :(得分:13)

在AngularJS 1.1.5中,你可以在ngRepeat中使用“track by”。

所以你可以:

 <input type="checkbox" ng-repeat="e in extra track by $index" ng-model="extra[$index]">

以下是一个示例:http://plnkr.co/edit/6lNo6R5EPsNGHUU6ufTE?p=preview