Filtern Sie einen Bereich mit mehreren wählen Sie in AngularJS
Hier ist mein fiddel: http://jsfiddle.net/mwrLc/12/
<div ng-controller="MyCtrl">
<select ng-model="searchCountries" ng-options="cc.country for cc in countriesList | orderBy:'country'">
<option value="">Country...</option>
</select>
<select ng-model="searchCities" ng-options="ci.city for ci in citiesList | filter:searchCountries | orderBy:'city'">
<option value="">City...</option>
</select>
<ul>
<li ng-repeat="item in list | filter:searchCountries | filter:searchCities">
<p>{{item.country}}</p>
<p>{{item.city}}</p>
<p>{{item.pop}}</p>
<br>
</li>
</ul>
Den ersten wählen Sie "Filter", die zweite, sondern auch die Ergebnis-Liste.
Der zweite Filter auswählen, werden nur die Ergebnis-Liste.
Es funktioniert großartig, bis ein Land und eine Stadt ausgewählt werden. Dann, wenn Sie ein anderes Land, eine zweite select-hab reseted, aber der Umfang zu sein scheint, hängt mit dem alten Wert.
ich kann nicht finden, eine Möglichkeit zu haben, es funktioniert... Bitte um Hilfe!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die beste Lösung ist ein reset der city-Modell, wenn eine änderung an Land Modell ermittelt über
$scope.$watch()
:Beachten Sie, dass ich änderte Ihre Modell-Namen, um Einzahl ("searchCountry" und "searchCity"), die ist besser geeignet, bedenkt man den Wert dieser Modelle auf ein einzelnes Land oder Stadt.
Hier ist die vollständige Arbeit Beispiel: http://jsfiddle.net/evictor/mwrLc/13/
Hesekiel Sieger Lösung ist ausgezeichnet. Aber ich lief in ein bisschen ein dependency-injection-Problem beim Versuch, diese zu arbeiten, wenn die Referenzierung der controller aus einem ng-include. Dank der Hilfe von Ben Tesser ich war in der Lage, das Problem zu beheben. Ive befestigt ein jsfiddle, die details des Updates:
http://jsfiddle.net/uxtx/AXvaM/
der Hauptunterschied ist, dass Sie brauchen, um wickeln Sie die searchCountry/searchCity als ein Objekt und festlegen der default-Wert null. Dito für die Uhr.
In Ihrer Vorlage, die Sie ' ll ändern Sie alle Verweise von searchCountry/searchCity zu testen.searchCountry.
Ich hoffe das spart jemand einige Zeit. Es ist trixy.