2013-04-29 28 views
0


這裏是我的小提琴:http://jsfiddle.net/mwrLc/12/
過濾多一個選擇的範圍在AngularJS

<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> 

的第一選擇過濾器的第二個也是結果列表。
第二個選擇只篩選結果列表。
直到選擇了一個國家和一個城市,它才奏效。然後,當你選擇另一個國家時,第二選擇被重新設定,但範圍似乎被卡住了舊的價值。

我無法找到一種方法使其正常工作...請幫助!

回答

2

最好的解決辦法是重置時通過$scope.$watch()檢測更改國模型的城市模型:

function MyCtrl($scope) { 
    // ... 

    $scope.$watch('searchCountry', function() { 
     $scope.searchCity = null; 
    }); 
} 

請注意,我改變了你的型號名稱,以單數形式(「searchCountry」和「searchCity」)考慮到這些模式的價值被設置爲單個國家或城市,這更爲合適。

以下是完整的工作示例:http://jsfiddle.net/evictor/mwrLc/13/

+0

確實,這是解決方案。我試過了,但它不適用於安裝了JQM和JQMA適配器......我找不出原因。 Angular和JQM真的不適合在一起。沒有JQM,運作良好。 – 2013-04-30 15:49:17

+0

你可以發表小提琴或其他問題嗎?我很想知道JQM在幹什麼搞砸了! – 2013-05-01 06:54:20

+0

http://jsfiddle.net/mwrLc/17/在這裏。正如你所看到的,第二個選擇器從不重置,不知道爲什麼......必須是適配器的問題。 – 2013-05-01 18:36:08

0

結死無葬身之地的解決方案是優秀的。然而,我試圖在從ng-include引用控制器的時候遇到了一些依賴注入的問題。感謝Ben Tesser的幫助,我解決了這個問題。香港專業教育學院附一的jsfiddle,詳細的修補程序:

http://jsfiddle.net/uxtx/AXvaM/

的主要區別是,你需要用的searchCountry/searchCity作爲一個對象,並設置默認值設置爲null。手錶同上。

$scope.test = { 
    searchCountry: null, 
    searchCity: null 
}; 
/// And your watch statement /// 
    $scope.$watch('test.searchCountry', function() { 
     $scope.test.searchCity = null; 
}); 

在您的模板中,您將所有從searchCountry/searchCity引用改爲test.searchCountry。

我希望這可以節省一些人的時間。它是三元的。