ホームページ > 記事 > ウェブフロントエンド > AngularJS でチェックボックスの値をリストに効果的にバインドするにはどうすればよいですか?
チェックボックス値を AngularJS コントローラーのリストにバインドするには、次の 2 つの異なるアプローチを利用できます。
このアプローチでは、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: ['apple', 'orange', 'pear', 'naartjie'] $scope.fruits = ...; // Selected fruits: ['apple', 'pear'] $scope.selection = ...; // Toggle selection by fruit name $scope.toggleSelection = function toggleSelection(fruitName) { // ... code to manage selection ... }; }]);
長所:
短所:
または、次の配列を使用することもできます。入力データのオブジェクト:
<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: [{ name: 'apple', selected: true }, ...] $scope.fruits = ...; // Selected fruits: [/* fruit names */] $scope.selection = ...; // Helper method to filter selected fruits $scope.selectedFruits = function selectedFruits() { return filterFilter($scope.fruits, { selected: true }); }; // Watch `fruits` for changes $scope.$watch('fruits|filter:{selected:true}', function (nv) { // ... code to update `$scope.selection` ... }, true); }]);
長所:
短所:
各ソリューションには長所と短所があるため、最適なアプローチの選択はアプリケーションの特定の要件によって異なります。
以上がAngularJS でチェックボックスの値をリストに効果的にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。