Ng-viewに10(またはn)チェックボックスがあります。ここで、チェックボックスがチェックされているかどうかをチェックし、チェックされている場合はチェックボックスの値を取得するための最も効率的または簡単な方法は何ですか?.
<ul>
<li ng-repeat="album in albums">
<input type="checkbox" ng-model="folder.Selected" value={{album.name}} />
</li>
</ul>
ng-controller(getAlbumsCtrl)があり、すべてのチェックボックスアルバム名をalbumNameArrayにプッシュしたい配列があります。
配列をループして、どの配列が選択されているかを確認し、名前配列にプッシュできます。
<ul>
<li ng-repeat="album in albums">
<input type="checkbox" ng-model="album.selected" value={{album.name}} />
</li>
</ul>
$scope.save = function(){
$scope.albumNameArray = [];
angular.forEach($scope.albums, function(album){
if (!!album.selected) $scope.albumNameArray.Push(album.name);
})
}
// alternatively you can use Array.prototype.filter on newer browsers (IE 9+)
$scope.save = function(){
$scope.albumNameArray = $scope.albums.filter(function(album){
return album.selected;
});
}
これを見てください fiddle 、iはキーがアルバム名であるオブジェクトを使用しました
<input type="checkbox" ng-model="folder[album.name]" value={{album.name}}/>
コントローラ:
function ctrl($scope){
$scope.albums = [{name:'a1'},{name:'a2'},{name:'a3'}];
$scope.folder = {};
$scope.albumNameArray = [];
$scope.getAllSelected = function(){
angular.forEach($scope.folder,function(key,value){
if(key)
$scope.albumNameArray.Push(value)
});
}}
単にangular filterを使用できます。また、ng-model
はalbum.Selected
ではなくfolder.Selected
である必要があります
Html
{{(albums | filter : { Selected: true }: true)}}
コントローラー
$scope.albumNameArray = $filter('filter')($scope.albums, { Selected: true }, true);
コントローラで使用する前に、
$filter
をコントローラに追加することを忘れないでください
値を印刷したい場合。
次のように使用できます。
input type="checkbox" ng-model="checkboxModel.value2" ng-true-value="'YES'" ng-false-value="'NO'"