AngularJs从ng-repeat到Javascript变量的过滤输入?

时间:2017-03-23 09:46:44

标签: javascript angularjs

我目前正在使用AngularJs并使用多个选择框过滤输入数组。在过滤结果上,我运行ng-repeat来显示我现在过滤的数组中的每个元素。现在我的问题。我想将过滤后的输入数组保存为javascript变量,以便以后显示或打印整个结果。我实际上只希望将过滤后的输入数组保存为javascript变量甚至更好,每个ng-repeat的结果在变量中完全保存,但在再次应用新过滤器或过滤器后自行更新。我被困在这里。有没有顺利的方法来做到这一点。或者您是否更好地了解这里有什么用?谢谢你已经。 我们假设我们有一个语言过滤器和名称:

  select byhub , 
       COUNT(awbno),    
       sum(case when (datediff(uplopadtime,EntryDateTime)=0) then 1 else 0 end ),    
       sum(case when (datediff(uplopadtime,EntryDateTime)=1 or datediff(uplopadtime,EntryDateTime)=-1) then 1 else 0 end ),    
       sum(case when (datediff(uplopadtime,EntryDateTime)=2 or datediff(uplopadtime,EntryDateTime)=-2) then 1 else 0 end ),    
       sum(case when (datediff(uplopadtime,EntryDateTime) > 2 or datediff(uplopadtime,EntryDateTime) < -2) then 1 else 0 end )    
from MyTable  
group by byhub

现在我想要这样的东西:

$ scope.var = ... //过滤后的结果。

3 个答案:

答案 0 :(得分:1)

您可以直接将数组存储在ng-repeat

<ul ng-repeat="sq in (filteredInput = (input| filter:languageModel| filter:nameModel))>

现在您可以访问$scope.filteredInput以获取已过滤的数组

答案 1 :(得分:0)

您可以直接从javascript调用过滤器:

$scope.filteredInput = $filter('languageModel')($scope.input);

其中languageModel是过滤器的名称。 确保在控制器中注入$filter

顺便说一句,在ng-repeat元素上使用<ul>是很奇怪的。更合适的是将其放在<li>

<ul>
    <li ng-repeat="sq in input| filter:languageModel| filter:nameModel>
        <span>Language: {{sq['Language']}}</span>
        <span>Name: {{sq['Name']}}</span>
    <li>
</ul>

答案 2 :(得分:0)

您可以在代码后面编写自己的过滤器功能,如下所示

$scope.filterlanguage=function(item){

//add your condition if satisfies return or null
if(condition)
{
return item;
}
return null;


}