双向绑定不与ng-repeat一起使用

jsb*_*sht 7 javascript 2-way-object-databinding angularjs ng-repeat angular-ngmodel

我有一个简单的ng-repeat列表,其中我将当前列表项值分配给控制器上的另一个属性,如下所示:

  <li ng-repeat="num in list">
    <input type="text" ng-init="value = num" ng-model="value" />
    <button type="button" class="btn btn-primary" ng-click="save()">Save</button>
  </li>
Run Code Online (Sandbox Code Playgroud)

但是当我单击"保存"按钮时,我会获得为$ scope.value设置的默认值.我希望显示特定输入文本的值.

这是控制器:

 angular.module('myApp', [])
    .controller('MyController', function($scope){
      $scope.value = false;
      $scope.list = [0, 1, 2, 3, 4];

      $scope.save = function() {
         alert($scope.value);
      }
    });
Run Code Online (Sandbox Code Playgroud)

如何在保存函数调用中访问控制器中输入项的更新值.

这是相同的plunker:plnkr

更新:我希望将值提取到控制器而不将其作为参数传递.

Ave*_*isG 10

哇我无法相信大多数人都错过了这个.如果您使用的是Angular 1.2,那么您一定要track by在ngRepeat指令中查看关键字.

<li ng-repeat="num in list track by $index">
    <input type="text" ng-model="list[$index]" />
    <button type="button" class="btn btn-primary" ng-click="save()">Save</button>
</li>
Run Code Online (Sandbox Code Playgroud)

绑定时底线远离原始类型,因为它会给你同步问题.

Fellas请花更多的时间和精力研究您的解决方案,而不是仅仅发布积分.

希望这可以帮助!


小智 0

这是你可以做到的方法

<li ng-repeat="num in list">
    <input type="text" ng-init="value = num" ng-model="value" />
    <button type="button" class="btn btn-primary" ng-click="save(value)">Save</button>
  </li>


angular.module('myApp', [])
    .controller('MyController', function($scope){
      $scope.value = false;
      $scope.list = [0, 1, 2, 3, 4];

      $scope.save = function(argument) {
         $scope.value = argument;
         alert($scope.value);
      }
    });
Run Code Online (Sandbox Code Playgroud)