2017-03-14 68 views
0

我在有很多行的角度js中有一个列表。我想在列表中选择多个行并将其添加到另一个表中。在角度js中选择多行

我的代码是

<li class = "list-group-item listroleitem" ng-repeat='role in roles' ng-click="selectRow(role) 
      " ng-class="{selectedRole: role === idSelectedRow}">{{role.roleName}}</li> 

控制器:

$scope.selectRow = function(name){ 
     $scope.idSelectedRow = name; 

    }; 

怎么办呢?

回答

1

由于您控制选定的行变量,为什么不将它初始化为数组?

$scope.idSelectedRow = []; 

$scope.selectRow = function(name){ 
    if($scope.idSelectedRow.indexOf(name) > -1) 
     $scope.idSelectedRow.splice($scope.idSelectedRow.indexOf(name), 1); 
    else 
     $scope.idSelectedRow.push(name); 

}; 

然后在CSS中使用这样的:

<li class = "list-group-item listroleitem" ng-repeat='role in roles' ng-click="selectRow(role) 
      " ng-class="{selectedRole: isSelected(role) }">{{role.roleName}}</li> 




$scope.isSelected = function(some_role){ 
      return $scope.idSelectedRow.indexOf(role) >-1; 
} 
+0

我会怎么取消? –

+0

@PravinBhasker - 请参阅编辑。 – dev8080

0

更改您的代码

<li class = "list-group-item listroleitem" ng-repeat='role in roles' ng-click="selectRow(role) 
     " ng-class="{selectedRole: role.selected==true}">{{role.roleName}}---{{role.selected}}</li> 

function TodoCtrl($scope) { 
    $scope.roles = [{roleName:"abc"}, {roleName:"dc"}] 
    $scope.name = 'Superhero'; 

    $scope.selectRow = function(role){ 
     role.selected = !role.selected; 
    }; 
} 

https://jsfiddle.net/U3pVM/30783/