문제:
AngularJS에서는 체크박스 목록이 표시되고, 목표는 이들과 컨트롤러의 목록 사이에 바인딩을 설정하는 것입니다. 선택된 각 확인란은 목록에 관련 값이 포함되어 있음을 나타냅니다.
해결책:
AngularJS는 이 문제에 대해 두 가지 실행 가능한 솔루션을 제공합니다.
< ;h3>1. 입력 데이터로서의 단순 배열
이 접근 방식에서 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) { // Fruits $scope.fruits = ['apple', 'orange', 'pear', 'naartjie']; // Selected fruits $scope.selection = ['apple', 'pear']; // Toggle selection for a given fruit by name $scope.toggleSelection = function toggleSelection(fruitName) { var idx = $scope.selection.indexOf(fruitName); if (idx > -1) { $scope.selection.splice(idx, 1); } else { $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) { // Fruits $scope.fruits = [ { name: 'apple', selected: true }, { name: 'orange', selected: false }, { name: 'pear', selected: true }, { name: 'naartjie', selected: false } ]; // Selected fruits $scope.selection = []; // Helper method to get selected fruits $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 중국어 웹사이트의 기타 관련 기사를 참조하세요!