2013-07-25 28 views
1

我在使用兩個使用ng-hide的過濾器時遇到問題。 下面是顯示我的問題小提琴:http://jsfiddle.net/czPf6/2/ 這裏是我的代碼,有條件地選擇應用基於輸入值在輸入框和選擇框,其過濾器:使用兩個過濾器不能使用ng-hide angularjs

function applySearchFilter() { 
     var filterCategory = $scope.filters.cat.toLowerCase(); 
     //console.log(filterCategory); 
     var category = $scope.friend.job.toLowerCase(); 
     //console.log(category); 
     var filter = $scope.filters.name.toLowerCase(); 
     //console.log(filter); 
     var name = $scope.friend.name.toLowerCase(); 
     console.log(name + " " + category); 
     console.log("filter:" + filter + "/category:" + filterCategory); 
     if($scope.filters.name == "" && $scope.filters.cat !== ""){ 
      var isCategory = (filterCategory == category); 
      console.log(isCategory + "1st"); 
      $scope.isExcludedByFilter = ! isCategory; 
      console.log($scope.isExcludedByFilter); 
     } else if($scope.filters.name !=="" && $scope.filters.cat == ""){ 

      var isSubstring = (name.indexOf(filter) !== -1); 
      console.log(isSubstring + "2nd"); 
      $scope.isExcludedByFilter = ! isSubstring; 
      console.log($scope.isExcludedByFilter); 
     } else if($scope.filters.name !=="" && $scope.filters.cat !==""){ 

      var isCategory = (filterCategory == category); 
      var isSubstring = (name.indexOf(filter) !== -1); 
      console.log(isCategory + "3rd"); 
      console.log(isSubstring + "3rd"); 
      $scope.isExcludedByFilter = ! isSubstring && ! isCategory; 
      console.log($scope.isExcludedByFilter); 
     } 

日誌報表打印出來我期望他們是,但過濾器只適用於兩個輸入字段都有價值。我在這裏做錯了什麼?

回答

1

這是在最後的isExcludedByFilter件事,導致了它:

$scope.isExcludedByFilter = ! isSubstring || ! isCategory; 

我評論說,線路輸出。

我已經改變了:

} else if($scope.filters.name !=="" && $scope.filters.cat == ""){ 

    var isSubstring = (name.indexOf(filter) !== -1); 
    $scope.isExcludedByFilter = ! isSubstring && ! isCategory; // added && !isCategory 

} else if($scope.filters.name !=="" && $scope.filters.cat !==""){ 

    var isCategory = (filterCategory == category); 
    var isSubstring = (name.indexOf(filter) !== -1); 

    $scope.isExcludedByFilter = ! isSubstring || ! isCategory; // changed && to || 
} 

我還增加了以下在上面結束時,如果爲「任何」篩選語句。這意味着它會顯示所有的「朋友」在列表中:

 } else if($scope.filters.name =="" && $scope.filters.cat == ""){ 
      $scope.isExcludedByFilter = false; 
     } 

小提琴:http://jsfiddle.net/czPf6/10/

+0

謝謝你抓住的!示例應用程序使用該條件流程,但出於某種原因,我的真實應用程序不會。我能夠通過在嵌套的if語句的開始處檢查沒有輸入值來解決這個問題。 – sh3nan1gans

相關問題