如果选中复选框,如何知道向数组添加元素,如果未选中则将其删除?

时间:2015-05-12 07:19:29

标签: javascript jquery angularjs checkbox

这是我的HTML代码。我在google上发现它可以使用它。

FormattedText

这是我的angularJS控制器。

<input type="checkbox" ng-true-value="addTitle(cpPortfolioItem)" ng-false-value="removeTitle(cpPortfolioItem)">

它不起作用。我已将其记录在控制台中但我可以看到它既不推送也不拼接数组。也许$scope.addTitle = function(cpPortfolioItem){ $scope.selectedTitles.push(cpPortfolioItem.id); console.log('$scope.selectedTitles', $scope.selectedTitles); }; $scope.removeTitle = function(cpPortfolioItem){ $scope.selectedTitles.splice(cpPortfolioItem.id,1); console.log('$scope.selectedTitles', $scope.selectedTitles); }; 不是有效的指令?有人可以帮我吗?我真的很感激。

2 个答案:

答案 0 :(得分:2)

基于documentation ng-true-valueng-false-value值不是事件处理程序。这些是在model被选中(input)或未选中(ng-true-value)时设置为ng-false-value的值。

改为使用this或使用ng-model并将$watch附加到模型中。

答案 1 :(得分:0)

使用ng-change

<input type="checkbox" ng-change="titleChange()" ng-model="titleChanged">

在控制器中,

$scope.titleChanged = false;
$scope.titleChange = function() {
   if ($scope.titleChanged) {
      $scope.addTitle(cpPortfolioItem);
   } else {
      $scope.removeTitle(cpPortfolioItem);
   }
}

工作示例: - http://jsfiddle.net/Shital_D/Lcumc3t7/10/