AngularJS에서 체크박스 값을 목록에 효율적으로 바인딩하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-21 02:08:11
원래의
772명이 탐색했습니다.

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);
  };
}]);
로그인 후 복사

장점:

  • 단순화된 데이터 구조
  • 이름으로 쉽게 전환

단점:

  • 두 개의 목록 관리로 인한 추가/제거 작업 번거로움

사용 객체 배열

HTML에서:

<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);
}]);
로그인 후 복사

장점:

  • 간편한 추가/제거 연산

단점:

  • 더 복잡한 데이터 구조
  • 이름으로 전환하기 위한 도우미 메서드가 필요하거나 번거로움

추가 참고:

  • 라이브 데모는 http://jsbin.com/ImAqUC/1/에서 찾을 수 있습니다.
  • 바인딩하려는 확인란 값을 선택하고 컨트롤러의 해당 목록이 자동으로 업데이트됩니다.

위 내용은 AngularJS에서 체크박스 값을 목록에 효율적으로 바인딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿