在两个不同的选项卡中过滤 (AngularJS)
Filtering in two different tabs (AngularJS)
我有两个选项卡,必须对它们都进行过滤。
在第二个选项卡中,一切正常,但在第一个选项卡中却没有。
我正在填写与这部分(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
在您的 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;
}
在 HTML
中进行此更改
<div class="tab-content active" data-id="first">
<li ng-repeat='city in cities | filter:{name :search.district}:startsWith'>
<a href="{{ city.link }}">
{{ city.name }}
</a>
</li>
</div>
这是更新Plunker
由于您正在使用 search.district
,它会尝试访问城市的 .district
值。
您可以使用 search.name
代替,这里...
<ul search-list=".letter" model="search.name">
...这里...
<input id="q" type="text" ng-model="search.name" />
然后在分区数组的每个分区上将district
重命名为name
。
我有两个选项卡,必须对它们都进行过滤。 在第二个选项卡中,一切正常,但在第一个选项卡中却没有。 我正在填写与这部分(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
在您的 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;
}
在 HTML
中进行此更改<div class="tab-content active" data-id="first">
<li ng-repeat='city in cities | filter:{name :search.district}:startsWith'>
<a href="{{ city.link }}">
{{ city.name }}
</a>
</li>
</div>
这是更新Plunker
由于您正在使用 search.district
,它会尝试访问城市的 .district
值。
您可以使用 search.name
代替,这里...
<ul search-list=".letter" model="search.name">
...这里...
<input id="q" type="text" ng-model="search.name" />
然后在分区数组的每个分区上将district
重命名为name
。