angularjs ng-повтор внутри ng-повтор, внутренний массив не может обновиться

#angularjs #ng-repeat

#angularjs #ng-repeat

Вопрос:

Я родом из Китая, мой английский очень плохой, поэтому я делаю демонстрацию. как я могу обновить массив внутри ng-repeat ?

Ответ №1:

HTML:

 <body ng-app="main" ng-controller="DemoCtrl">

  <table ng-table class="table">
    <tr ng-repeat="user in users">
      <td data-title="'Name'">{{user.name}}</td>
      <td data-title="'Age'">{{user.age}}</td>
      <td>
        {{user.spms|json}}
        <div ng-repeat="u in user.spms">
          <span ng-bind="u"></span>
          <input type="text" ng-model="u" ng-change='updateArray($parent.$index, $index, u)'>
        </div>
      </td>
    </tr>
  </table>

</body>
 

JS:

 var app = angular.module('main', []).
controller('DemoCtrl', function($scope) {

  $scope.users = [{
      name: "Moroni",
      age: 50,
      spms: [
        6135.7678, 
        504.4589,
        2879.164, 
        669.7447
        ]
    },
    {
      name: "seven",
      age: 30,
      spms: [
        34135.7678, 
        5034.42589,
        22879.1264, 
        63469.72447
        ]
    }

  ];

  $scope.updateArray = function(parent, index, u) {
    $scope.users[parent].spms[index] = u * 1; // multiply by one to keep the value a Number
  }

})
 

Здесь есть проблемы: каждое обновление изменяет область действия, поэтому вы можете изменить их только один раз, щелкнув, а затем изменить — поэтому я бы рекомендовал добавить кнопку обновления значений и реализовать более или менее ту же логику для обновления значений массива.

ДЕМОНСТРАЦИЯ