【问题标题】:Angular JS, remember checkbox status when filteringAngular JS,过滤时记住复选框状态
【发布时间】:2015-07-14 07:49:06
【问题描述】:

我正在尝试使用带有搜索框的复选框创建一个列表。

HTML

  <div ng-controller="MainCtrl">
    <input type="text" placeholder="Search" ng-model="query">
    <div ng-repeat="item in items | filter:query">
      <input type="checkbox" id="{{item.id}}" value="{{item.id}}">{{item.name}}
    </div>
  </div>

JS

myApp.controller('MainCtrl', function ($scope) {
  $scope.items = [
    {
      "id": 1,
      "name": "Green",
    },
    {
      "id": 2,
      "name": "Yellow",
    },
    {
      "id": 3,
      "name": "Blue",
    },
    {
      "id": 4,
      "name": "Red",
    }
  ];
});

问题是当我通过搜索框搜索时,复选框状态未保存。例如,当我选中“绿色”时,我在文本框中输入其他内容,然后删除此文本,不再选中选中的“绿色”。我如何才能对复选框状态进行“记忆”?

这里是 plunker 的链接:http://plnkr.co/edit/KHq3AA4guGKA4AqxQrF8

【问题讨论】:

    标签: angularjs checkbox ng-repeat angularjs-filter


    【解决方案1】:

    我建议您在每个 itemitems 数组中添加一个属性,可以通过 item.checked 访问

    标记

      <div ng-controller="MainCtrl">
        <input type="text" placeholder="Search" ng-model="query">
        <div ng-repeat="item in items | filter:query">
          <input type="checkbox" ng-model="item.checked">{{item.name}}
        </div>
      </div>
    

    Working Plunkr

    【讨论】:

    • 谢谢...这太容易了!
    • 很高兴为您提供帮助..谢谢 :)
    • @PankajParkar 你能看看我的问题吗?出于某种原因,当我选中一个框时,我无法将值附加到我的ng-model,我收到以下错误 - TypeError: Cannot assign to read only property 'entityChecked'。如果你有时间,这是我的问题 - stackoverflow.com/questions/35276014/…
    • 会看看它..一旦我将有机器。
    【解决方案2】:

    ng-model="item.checked" 附加到复选框,例如:

    <input type="checkbox" ng-model="item.checked" id="{{item.id}}" value="{{item.id}}">{{item.name}}
    

    看到这个plunker

    【讨论】:

    • 我将第一个标记为正确答案,感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多