复选框中的错误从数组中选择

时间:2017-11-23 06:29:24

标签: javascript html arrays angularjs checkbox

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

$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文件中,我有一个表格和一个复选框,其中包含了item.selected的ng模型

<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来删除我的功能

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

尝试使用此代码,使用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 :(得分:-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);
                }
            }
        });
    }
});