如何在angularjs中获取复选框值?

时间:2015-06-27 16:14:02

标签: arrays angularjs asp.net-mvc-4 angularjs-filter angular-routing

我的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),因为我有一个数组,其中我想将所有的checkedbox相册名称推送到 albumNameArray

4 个答案:

答案 0 :(得分:21)

您可以遍历数组以找出选中的内容并推入名称数组。

<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;
  });
}

jsbin

答案 1 :(得分:1)

看一下这个fiddle,我使用了关键是专辑名称

的对象

<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)
    });
}}

答案 2 :(得分:1)

您可以在此处使用角度过滤器,同时ng-model应为album.Selected而不是folder.Selected

<强> HTML

{{(albums | filter : { Selected: true }: true)}}

<强>控制器

$scope.albumNameArray = $filter('filter')($scope.albums, { Selected: true }, true);
  

在控制器中使用它之前,不要忘记添加$filter   控制器

答案 3 :(得分:0)

如果您想获得打印的价值。
您可以使用:

input type="checkbox" ng-model="checkboxModel.value2" ng-true-value="'YES'" ng-false-value="'NO'"