【问题标题】:How to get checkbox value in angularjs?如何在angularjs中获取复选框值?
【发布时间】:2023-03-13 21:42:01
【问题描述】:

我的 ng 视图中有一个 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

【问题讨论】:

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


    【解决方案1】:

    您可以遍历数组以找出选择了哪个并将其推入名称数组。

    <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

    【讨论】:

    • 我认为 if (!!album.selected) 应该很简单 'if (album.selected) { $scope.albumNameArray.push(album.name);'但是当我这样做时.. 我得到 (album.selected) = undefined。但是,只是为了检查目的,我做了 value = {{album.selected}} 这是真的..但是在控制器中它给了我未定义的错误..
    • 这就是我正在做的 JavaScript:- angular.forEach($scope.albums, function (album) { if (album.selected) { $scope.albumNames.push(album.name); } }); HTML :- 我得到了 album.selected = undefined。跨度>
    • 抱歉,我没有看到复选框值。通常我在使用复选框时不会设置价值,只是使用 ng-model。如果 value 对模型有影响,能否检查模型是否已经是名称本身而不是对象?
    • 我的 routeConfig 中有 2 个配置。一个是 $routeProvider。 when('/albums', { templateUrl: 'xyz.html', 控制器: 'getAlbumsCtrl' }) .when('/Album/:AlbumName', { templateUrl: 'xyz.html', 控制器: 'getAlbums12Ctrl' })在 getAlbums12Ctrl() 中,我正在收集 AlbumName 是 $routeParams,但我需要的是专辑后面的任何内容/* 请像这样在 AlbumName($routeParams) 中收集它 ** /albums/bollywood >>(AlbumName = "bollywood")* * */albums/bollywood/old >> (AlbumName = "bollywood/old)" /albums/
    • 我可能对路线不够了解,无法回答这个问题,您可以打开一个新的,以便其他更了解此问题的人回答。
    【解决方案2】:

    看看这个fiddle,我用了key是专辑名的对象

    &lt;input type="checkbox" ng-model="folder[album.name]" value={{album.name}}/&gt;

    控制器:

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

    【讨论】:

    【解决方案3】:

    您可以在这里简单地使用角度过滤器,您的 ng-model 也应该是 album.Selected 而不是 folder.Selected

    HTML

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

    控制器

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

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

    【讨论】:

    • imp for me... $scope.save = function() { } $scope.read = function() {} 假设我想从 read 中调用 save 函数..因为当我在做我得到 save() not defined.. 我这样做 $scope.read = function() { save(); }
    • @Chetan 作为范围内的两种方法,那么它应该是$scope.read = function() { $scope.save(); }
    • 我的 routeConfig 中有 2 个配置。一个是 $routeProvider。 when('/albums', { templateUrl: 'xyz.html', 控制器: 'getAlbumsCtrl' }) .when('/Album/:AlbumName', { templateUrl: 'xyz.html', 控制器: 'getAlbums12Ctrl' })在 getAlbums12Ctrl() 中,我正在收集 AlbumName 是 $routeParams,但我需要的是专辑后面的任何内容/* 请像这样在 AlbumName($routeParams) @Pankaj 中收集它 ** /albums/bollywood >>(AlbumName = "bollywood" )** */albums/bollywood/old >> (AlbumName = "bollywood/old)" /albums/
    【解决方案4】:

    如果你想得到打印的值。
    你可以像这样使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 2016-02-28
      相关资源
      最近更新 更多