Angular记录单击的复选框的顺序

时间:2014-09-25 09:16:55

标签: angularjs angularjs-scope angularjs-ng-repeat angular-ui

我正在尝试在我的角度应用程序中添加功能,以便在单击它们时记录复选框的顺序,从而以与单击它们相同的顺序显示它们。

以下是摘录:

var app = angular.module('checkbox', []);

app.controller('homeCtrl', function ($scope) {
    $scope.array = [1, 5];
    $scope.array_ = angular.copy($scope.array);
    $scope.list = [{
        "id": 1,
            "value": "apple",
    }, {
        "id": 3,
            "value": "orange",
    }, {
        "id": 5,
            "value": "pear"
    }];

    $scope.update = function () {
        if ($scope.array.toString() !== $scope.array_.toString()) {
            return "Changed";
        } else {
            return "Not Changed";
        }
    };

})
});

在此代码段数组中,应按照单击顺序显示数字。

1 个答案:

答案 0 :(得分:0)

不确定我是否完全理解您的需求,但请查看 Plunker

这个想法是使用这样的函数来记录点击顺序:

$scope.onClick = function(box) {
  var index = $scope.model.clickOrder.indexOf(box);
  if (index !== -1) {
    $scope.model.clickOrder.splice(index, 1);
  } else {
    $scope.model.clickOrder.push(box);
  }
  updateOrderedList();
};

这样的函数更新复选框顺序:

var updateOrderedList = function() {
  $scope.model.orderedList = []
    .concat($scope.model.clickOrder)
    .concat($scope.model.list.filter(function(item) {
      return $scope.model.clickOrder.indexOf(item) === -1;
    }));
};