按动态计数 AngularJS 排序时的奇怪行为 -

Strange behaviour when Ordering by dynamic count AngularJS -

本文关键字:动态 AngularJS 排序      更新时间:2023-09-26

我想按计数对这个练习列表进行排序,这在第一次加载时有效,但是当您开始单击增加或减少时,它会增加/减少其他索引的计数

.HTML:

 <div class="row" ng-repeat="exercise in exercises  | orderBy:'count' ">
              <div class="exercise-icon col-xs-2"> <img ng-src="{{ exercise.icon }}" /></div>
              <div class="col-xs-6">
                <p class="exercise-name"> {{ exercise.name }} </p>
              </div>
              <div class="col-xs-4 counters">
                <span class="decrease" ng-click="decrease($index)">-</span>
                <span class="count">{{ exercise.count }} </span>
                <span class="increase" ng-click="increase($index)">+</span>
              </div>
            </div>

JS - 控制器

app.controller('MainController', ['$scope', function($scope) {
  $scope.exercises = [
    {
      icon: 'img/pushup.jpg',
      name: 'Pushups',
      count: 20
    },
    {
      icon: 'img/squat.jpg',
      name: 'Squats',
      count: 15
    },
    {
      icon: 'img/pullup.jpg',
      name: 'Pullups',
      count: 10
    },
...

 $scope.increase = function(index) { 
                      $scope.exercises[index].count += 1; 
                    };
 $scope.decrease = function(index) { 
                 if ( ($scope.exercises[index].count) > 0){
                      $scope.exercises[index].count -= 1;
                     }
                 };

而是使用$index传递对象本身

喜欢这个

<span class="decrease" ng-click="decrease(exercise)">-</span>

.JS

$scope.decrease=function(exercise){
  exercise.count--;
}