2016-05-12 4 views
1

背景:従業員を選択できるテーブルがあります。これらの従業員を名前でフィルタリングしたいのですが(名前はフィルタリングには適していませんが、これは単なる例です) 基本的に私はフィルタを1つ選択します。JavaScriptを選択する

私の宣言:$scope.filters = null;。 私のフィルタを選択するこの減速もあります$scope.chosenFilter= null;

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

すべて:私は私のフィルタを選択するには、次の使用

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.filters = retrieveFilters(info.Names);

retrieveFiltersは、次のようになりますしている異なるフィルタを取得するために、次を使用します私はデフォルトを

に設定しているので、ディスプレイは最初の負荷で動作します0
//Add Default option 
datasetOptions.push({ 
    name: $scope.data.Fnames.defaultFilterOptionLabel, 
    value: '' 
}); 

従業員の名前をクリックするたびに、デフォルトのテーブルから詳細が表示されます。しかし、従業員の名前をフィルタしてクリックすると、何も表示されません。デフォルトのテーブルで特定の従業員の名前をクリックし、同じ名前でフィルタするたびに、毎回キャッシュするので、その情報も表示されます。

答えて

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にはフィルタが組み込まれており、一般的にはそれを利用する方法があります。 –

関連する問題