对通过ng-repeat(AngularJS)创建的列表进行不正确的过滤

时间:2015-07-01 13:22:35

标签: angularjs angularjs-ng-repeat filtering ng-repeat

我有一个数组,其中包含区域和数组,每个数组都包含城市。我通过bg-repeat创建了列表:

 <div ng-repeat="district in districts | filter:search:startsWith" class="district">

      <h4 class="district-name">{{ district.district }}</h4>
      <a href="{{ district.link }}">Some info</a>

      <ul class="district-cities">

        <li ng-repeat="city in district.cities">
          {{ city }}
        </li>

      </ul>


    </div>

当我们点击该地区开始的信件时,一切正常,但是当我们点击某个字母时,这不是地区的第一个字母,但同时它是在其中一个城市的存在,然后过滤工作不正确。

这是工作Plnkr。当您尝试点击字母A, B or G时,一切正常,但是一旦您点击字母Z,就会出现两个不在字母Z上开头的地区,但是包含包含字母{的城市{1}}。

对不起,可能是,基本问题,但如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

试试这个:

    <input id="q" type="text" ng-model="search.district " />

<ul search-list=".letter" model="search.district">
    <li class="letter" ng-repeat="letter in alphabet.letter">{{ letter }}</li>
</ul>

它意味着过滤器仅作用于对象的区域属性。否则,角度将查看所有属性。

<强>更新

对于您的第二个列表,您希望将search.district用作主搜索项,如下所示:

<div ng-repeat="district in districts | filter:search.district:startsWith" class="district">

我已经更新了Plunk以包含第二个蓝色列表,这个列表就是这样搜索的。