过滤两个不同的选项卡(AngularJS)

时间:2015-07-13 09:56:23

标签: javascript angularjs filter angular-ngmodel

我有两个标签,必须对它们进行过滤。 在第二个标签中一切正常,但在第一个没有。 我填写这个问题涉及到这个部分(ng-model):

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

以及:

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

所以第二个标签工作正常:

<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 ">
            <a href="{{ city.url }}">
                  {{ city.name }}
                </a>
        </li>
    </ul>
</div>

但如何让作品成为第一部分我不知道......

这是DEMO

3 个答案:

答案 0 :(得分:1)

在HTML中执行此更改

Timeslot.where("start_date >= ? AND end_date <= ?", Wed, 01 Jul 2015 18:00:00 SGT +08:00, Wed, 01 Jul 2015 21:00:00 SGT +08:00)

这是updatd Plunker

答案 1 :(得分:0)

startsWith方法中,您具体引用了对象的district属性。此属性在城市对象上不存在:

$scope.startsWith = function (actual, expected) {
  var lowerStr = (actual + "").toLowerCase();
  var e = angular.isString(expected) ? expected.toLowerCase() :
                                       // district is not present in City object
                                       expected.district.toLowerCase();
  return lowerStr.indexOf(e) === 0;
}

答案 2 :(得分:0)

由于您使用的是search.district,它会尝试访问城市的.district值。

您可以使用search.name,而不是......

<ul search-list=".letter" model="search.name">

......在这里......

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

然后在区域阵列的每个区域将district重命名为name