javascript - Angular JS : Add and remove terms from checkboxes in ng-repeat?

标签 javascript angularjs checkbox angularjs-ng-repeat

我有一个用 Angular 和 Bootstrap 构建的米勒列。

http://codepen.io/smlombardi/pen/WGwGbY

在第二列中,单击单词(链接)将打开第三列,但我需要使用复选框将该单词添加到搜索词数组中。

如果未选中该复选框,我需要从搜索词数组中删除该词。正如您在笔中看到的,我的添加部分正在工作,但取消选中该框会再次添加该单词。

我意识到我需要做的是以某种方式检查复选框的状态,如果为 true,则添加该单词,如果为 false,则检查数组中的单词(字符串)并将其从数组中弹出。

我不知道如何仅检查被单击的复选框。

   <div class="col-xs-3 inner-column">
<div class="panel panel-default">

  <div class="list-group">
    <div class="list-group-item" ng-class="{active: $index === pmt.millercolumn.level1Selected }" ng-repeat="level1 in pmt.millercolumn.level1 track by $index">
     <input type="checkbox" ng-model="activeSearchTerm" ng-change="pmt.change($index)" id="ng-change-example1" />
      <a href="" ng-click="pmt.getSublevel2($index)" >
        {{level1.name}}
        <i class="pull-right fa fa-angle-right fa-lg"></i>
      </a>
    </div>
  </div>
</div>

复选框上的 ng-change 调用:

   _this.change = function (index) {
    var searchTerm = _this.millercolumn.level1[index].name;
    _this.searchTerms.push(searchTerm);
  };

最佳答案

看起来您正在以 jquery 思维方式思考,当某些事情发生变化时,您需要处理事件。一种更简单的方法是让每个复选框对应于数组中的一个项目,因此 ng-model 将类似于 level1.isSelected。然后,要构建您的搜索词数组,请使用scope.$watch并传递true作为第三个参数来深度监视您的项目数组。选中复选框后,您的 watch 将被调用,您可以通过提取所选列表项的术语来重建搜索词数组。

关于javascript - Angular JS : Add and remove terms from checkboxes in ng-repeat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39495433/

相关文章:

php - 生成多个复选框并评估它们

javascript - 在做某事之前如何确认所有复选框都已选中?

javascript - 在一个函数中,返回另一个函数的目的是什么? (Javascript)

javascript - 如何将混合的 ascii 和 unicode 转换为 javascript 中的字符串?

javascript - 仅使用 JavaScript 将悬停工具提示添加到 id

angularjs - angular.factory 的单元测试是什么以及如何进行

javascript - 如何指定指令使用哪个 $scope?

javascript - Angular Ionic 数据绑定(bind)问题

jsp - 在CQ5中,为什么 'checkbox' xtype不起作用?但是需要 'selection' xtype 和 'checkbox' 类型才能在对话框中创建工作复选框?

javascript - 无法在 webgl 中将 Canvas 渲染为纹理,但可以渲染蓝色