首頁  >  文章  >  web前端  >  如何在 AngularJS 中有效地將複選框值綁定到清單?

如何在 AngularJS 中有效地將複選框值綁定到清單?

Linda Hamilton
Linda Hamilton原創
2024-11-21 02:08:11791瀏覽

How to Efficiently Bind Checkbox Values to a List in AngularJS?

綁定到AngularJS 中的複選框值清單

要將多個複選框值與控制器中的列錶關聯,有兩種主要方法:利用簡單數組或物件數組。

使用簡單陣列

在HTML 中:

<label ng-repeat="fruitName in fruits">
  <input
    type="checkbox"
    name="selectedFruits[]"
    value="{{fruitName}}"
    ng-checked="selection.indexOf(fruitName) > -1"
    ng-click="toggleSelection(fruitName)"
  > {{fruitName}}
</label>

在控制器中:

app.controller('SimpleArrayCtrl', ['$scope', function SimpleArrayCtrl($scope) {

  $scope.fruits = ['apple', 'orange', 'pear', 'naartjie'];
  $scope.selection = ['apple', 'pear'];

  $scope.toggleSelection = function toggleSelection(fruitName) {
    var idx = $scope.selection.indexOf(fruitName);
    idx > -1 ? $scope.selection.splice(idx, 1) : $scope.selection.push(fruitName);
  };
}]);

在控制器中:

  • 在控制器中:
在控制器中:

優點:
簡化的資料結構

簡單按名稱切換

缺點:
<label ng-repeat="fruit in fruits">
  <input
    type="checkbox"
    name="selectedFruits[]"
    value="{{fruit.name}}"
    ng-model="fruit.selected"
  > {{fruit.name}}
</label>

app.controller('ObjectArrayCtrl', ['$scope', 'filterFilter', function ObjectArrayCtrl($scope, filterFilter) {

  $scope.fruits = [
    { name: 'apple',    selected: true },
    { name: 'orange',   selected: false },
    { name: 'pear',     selected: true },
    { name: 'naartjie', selected: false }
  ];

  $scope.selection = [];

  $scope.selectedFruits = function selectedFruits() {
    return filterFilter($scope.fruits, { selected: true });
  };

  $scope.$watch('fruits|filter:{selected:true}', function (nv) {
    $scope.selection = nv.map(function (fruit) {
      return fruit.name;
    });
  }, true);
}]);
由於管理兩個列表,添加/刪除操作繁瑣

使用陣列物件
  • 在HTML 中:

在控制器中:

  • 優點:好
優點

優點

    優點
  • 優點:
優點::優點 輕鬆新增/刪除操作缺點:資料結構更複雜繁瑣或需要以名稱切換的輔助方法額外注意:現場示範可以在http://jsbin.com/ImAqUC/1/找到。 選擇要綁定的複選框值,然後控制器中對應的清單會自動更新。

以上是如何在 AngularJS 中有效地將複選框值綁定到清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn