2016-05-12 89 views
1

背景:我有一張表可以選擇員工。我想通過名稱來過濾這些員工(我知道名稱不是一種好的過濾方式,這僅僅是一個例子) 基本上我有一個下拉式選擇過濾器。JavaScript選擇過濾器

我的聲明:$scope.filters = null;。 我也有這個減速選擇我的過濾器$scope.chosenFilter= null;

我使用以下方法來獲取不同的過濾器我已經$scope.filters = retrieveFilters(info.Names);

retrieveFilters如下所示:

var retrieveFilters = function(rows) { 

    var filterWrapper = document.querySelector(".filterWrapper"); 
    var datasetOptions = []; 

    $scope.predicate = 'Name'; 

    if (rows) { 
     //Add Default option 
     datasetOptions.push({ 
      name: $scope.data.Fnames.defaultFilterOptionLabel, 
      value: '' 
     }); 
     $scope.chosenFilter = datasetOptions[0]; 

     _.forEach(rows, function(ele) { 
      datasetOptions.push({ 
       name: ele, 
       value: ele 
      }); 
     }); 
    } else { 
     filterWrapper.style.display = "none"; 
      } 

    return datasetOptions; 
}; 

我使用以下方法來選擇我的過濾器:

$scope.$watch('chosenFilter', function() { 
    var filterSearchInput = document.querySelector(".filterWrapper input"); 
    ng.element(filterSearchInput).triggerHandler('input'); 
}); 

一切很好,顯示器在第一次加載時工作,因爲我已經設置了默認值

//Add Default option 
datasetOptions.push({ 
    name: $scope.data.Fnames.defaultFilterOptionLabel, 
    value: '' 
}); 

從默認表中,每當我點擊一個員工姓名hes詳細信息顯示。然而,無論何時我篩選並點擊員工姓名,都不會顯示任何內容。每當我點擊默認表中的特定員工姓名,然後以相同名稱過濾時,信息也會顯示出來,因爲我每次都會緩存它。

回答

0

我假設你使用ng-repeat在你的GUI的某個地方顯示這些數據。 Angular有很多非常棒的內置功能。看看這裏的答案:AngularJS custom search data by writing custom filter從角度方向更接近這一點。您也可能想查看此問題並回答:"Thinking in AngularJS" if I have a jQuery background?

+0

是的我正在使用ng-repeat進行顯示,並且只要我從選項中選擇特定名稱,數據就會顯示正常。但是,當我點擊沒有信息顯示的實際行。但是,如果我點擊默認表中的那一行,不是「過濾」,那麼信息就會顯示。我只是無法獲取信息,無論何時被過濾,所以我認爲我在做錯誤的過濾方式。 –

+0

是的,請查看我鏈接到上面的問題中的過濾。簡而言之,ng-repeat具有內置過濾功能,並且使用它通常是最佳選擇。 –