2013-08-23 24 views
2

當通過父選擇值篩選子選擇對象時,我使用下面的代碼得到過濾器的結果,正如預期的那樣。 (過濾器是基於範圍變量$ scope.le_form.categories.id)如果空的過濾器結果是ng-hide true?

但我只是想表明孩子選擇,如果過濾器不爲空:

<div ng-show="(labels|filter:labelFilter).length"> 
    <label>Labels in categories</label> 
    <select ng-options="l.label for l in labels | labelFilter: {cats: le_form.categories.id}" ng-model="le_form.product_labels_uid"> 
     <option value="" disabled>Select</option> 
    </select>    
</div> 

所以,我的過濾器正在執行,但我不會這ng顯示爲true,除非在其篩選結果上找到父ID。

當然,你在ng-show上看到的那個條件是有效的,但是如果過濾器沒有返回結果,它不會隱藏div。我怎樣才能做到這一點?

+0

Dont this work? 'ng-show =「(labels | filter:labelFilter).length> 0」' – AlwaysALearner

+0

試過了,沒有任何結果 –

回答

0

我寫這篇$手錶用VAR來保存過濾後的結果,所以我可以數得過來:

$scope.$watch("le_form.categories_uid.id", function(query){ 
    $scope.filteredData = $filter("filter")($scope.labels, query); 
}); 

那麼我就可以:

NG秀= 「filteredData.length」

但事情是過濾器會遍歷所有對象的道具,所以出現錯誤的結果。 爲了確保有關filteredData內容,我有我的自定義過濾器的邏輯複製$表內:

$scope.$watch("le_form.categories_uid.id", function(query){ 
    var arr = []; 
    $scope.filteredData = $filter("filter")($scope.labels, query); 
    for (var i = 0; i < $scope.filteredData.length; i++) { 
     if ($scope.filteredData[i].categories_uid == query) { 
      arr.push($scope.filteredData[i]); 
     } 
    } 
    $scope.filteredData = arr; 
}); 

真的不知道ATM,如果這是正確的方式,但它的作品。

0

基本上你可以通過默認和NG-秀= 「myvalue的」 通過Twitter的引導隱藏 你可以寫$ scope.myValue()=功能} { 這裏做你的邏輯在控制器 得到過濾項... }

參考文獻: https://docs.angularjs.org/api/ng/directive/ngShow

拉貝爾在類別 選擇