Обновить элементы массива в таблице ng-repeat в AngularJS - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть приложение AngularJS, которое извлекает данные из файла JSON.Часть данных добавляется в таблицу с помощью ng-repeat в шаблоне деталей.Когда я выбираю первый объект, данные, которые должны попасть в таблицу, работают нормально.Однако, когда я щелкаю по другому объекту, значения данных из предыдущего объекта остаются, и значения данных для вновь выбранного объекта добавляются внизу.

Как получить значения в таблице, чтобы они отображались только тогда, когда ихобъект выбран?Я использую метод .push() для вставки значений, поэтому я подумал, что .slice() в if statement может быть решением, но пока не повезло.

JS

pplApp.directive("peopleDetails", function(FindSearch) {
return {
restrict: 'E',
scope: {
  people: "=ngPeople"
},
templateUrl: 'ppl_details.html',
controller: function($scope, $element, $attrs, $templateCache, $rootScope, FindSearch) {
  $scope.likesAndDislikes = [];
  var results = [];
  var item;
  $scope.getNumber = function() {
    array = new Array($scope.people.rating)
    return array;
  }

  $scope.getLikesAndDislikes = function() {
    $scope.likeAndDislikes = [];
    results = [];

    $scope.people.Likes.forEach(function(value, key) {
      var insert = {
        'likes': value,
        'dislikes': $scope.people.Dislikes[key]
      };
      $scope.likesAndDislikes.push(insert);
    });
  }

  $scope.$watch('people', function() {
    $scope.getLikesAndDislikes();
  });
}
};
});

Вот мой код в Plunker , чтобы получить полную картину.

1 Ответ

0 голосов
/ 22 сентября 2018

Это потому, что вы не сбрасываете ту же самую переменную модели массива likesAndDislikes.Из директивы peopleDetails обновите свой метод до:

$scope.getLikesAndDislikes = function() {
    $scope.likesAndDislikes = [];
    results = [];

    $scope.people.Likes.forEach(function(value, key) {
      var insert = {
        'likes': value,
        'dislikes': $scope.people.Dislikes[key]
      };
      $scope.likesAndDislikes.push(insert);
    });
}

Вот только что я обновил - это сброс имени переменной массива: $scope.likesAndDislikes = []; то, что вы ошиблись и использовали, похоже на AndDislikes.

Обновлено plunker Пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...