更改数组取决于选中/取消选中复选框

时间:2015-08-13 11:03:10

标签: angularjs checkbox

我想更改columns: [...]取决于复选框。

如果我选中该复选框,那么它应该会给我columns: ['model.name' ,'model.department']

当我取消选中时,应将其更改为columns: ['model.name'] - 已删除model.department



angular.module('plunker', [])

.controller('MainCtrl', function($scope) {
  $scope.options = {
    columns: ['model.name', 'model.department'],
  };
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html ng-app="plunker">

<head>
  <meta charset="utf-8" />
  <title>AngularJS Plunker</title>
  <script data-require="angular.js@1.*" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular.js"></script>
  <script>
    document.write('<base href="' + document.location + '" />');
  </script>
  <link rel="stylesheet" href="style.css" />
  <script src="app.js"></script>
</head>



<body ng-controller="MainCtrl">
  <li>
    <label>
      <input type="checkbox" ng-model=options.columns>Department</label>
  </li>
</body>

</html>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:3)

向控制器中的作用域添加一个函数,以添加或删除该项目,具体取决于是否选中该复选框:

$scope.addRemoveItem = function (checked, value) {
  if (checked) {
    $scope.options.columns.push(value);
  }
  else {
    var index = $scope.options.columns.indexOf(value);
    $scope.options.columns.splice(index);
  }
};

然后在更改复选框时使用ng-change调用此函数:

<label><input type="checkbox" ng-model="departmentChecked" ng-change="addRemoveItem(departmentChecked, 'model.department')">Department</label>

Plunkr

相关问题