【问题标题】:Error in checkbox select from array从数组中选择复选框时出错
【发布时间】:2018-05-07 00:48:34
【问题描述】:

我有一个来自数据库的数组。在我的控制器中,我有以下代码:

$rootScope.photobloblist=[];
angular.forEach($scope.photos, function(value3, key3) {
              if(key3=="Landscape"){
                $rootScope.photobloblist=[];
                console.log(key3+"----"+value3.length);
                    angular.forEach(value3, function(value2, key2) {
                              for(var i = 0;i<value2.length;i++){
                                if(key2==Categoryname)
                                  $rootScope.photobloblist.push(value2[i]);
                                console.log( $rootScope.photobloblist);
                              }                      
                     });             
              }

            });

在我的 html 文件中,我有一个表格和一个复选框,其 ng-model 为 item.selected

<tr ng-repeat="item in photobloblist" >
    <td><input type="checkbox" name="select" value="selected" ng-model="item.selected"></td>
    <td>{{item}}</td>
    <td><img ng-src='{{ item }}' width='150px' height='100px'></td>
</tr>

我的问题是我无法选中任何复选框,并且显示“无法创建在字符串上选择的属性”的错误。我怎样才能解决这个错误。我需要为我的删除功能使用 checkbo

【问题讨论】:

  • 尝试使用 value = {{item.selected}}
  • @PJ 我将在哪里使用它?
  • 对 m8 有什么意见吗?

标签: javascript html arrays angularjs checkbox


【解决方案1】:

试试这个代码,用ng-true-value代替value

<tr ng-repeat="item in photobloblist" >
    <td><input type="checkbox" name="select" ng-true-value="1" ng-false-value="0" ng-model="item.selected"></td>
    <td>{{item}}</td>
    <td><img ng-src='{{ item }}' width='150px' height='100px'></td>
</tr>

【讨论】:

    【解决方案2】:

    您可以通过以下代码执行此操作: 正如错误所说,您不能将属性添加到字符串,您可以创建一个对象并完成剩下的工作:

    $scope.photos={
        Landscape:{
            Categoryname : ["cat1","cat2"]
        }
    };
    
    $rootScope.photobloblist=[];
    angular.forEach($scope.photos, function(value3, key3) {
        if(key3=="Landscape"){
            $rootScope.photobloblist=[];
            angular.forEach(value3, function(value2, key2) {
                for(var i = 0;i<value2.length;i++){
                    if(key2=="Categoryname"){
                        var temp ={};
                        temp.value=value2[i];
                        $rootScope.photobloblist.push(temp);
                    }
                }
            });
        }
    });
    

    【讨论】:

      【解决方案3】:

      $rootScope.photobloblist 是您尝试在输入上绑定的字符串数组,但需要一个对象/对象数组。

      尝试为每个复选框创建一个对象:

      if (key2 === "Categoryname") { 
          $rootScope.photobloblist.push({
             value: value2[i],
             name: value2[i]
             selected: false
          });
       }      
      

      【讨论】:

      • @bleykFaust 你能创建一个工作小提琴来重现你的问题吗?谢谢
      • @bleykFaust 所以我们帮不了你
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 2021-10-17
      • 1970-01-01
      • 2011-03-12
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多