[英]AngularJS - Getting filtered ng-repeat $index from inside a controller
[英]AngularJs get filtered input from ng-repeat to a Javascript variable?
我目前正在使用AngularJs,并且正在使用多个选择框过滤输入数组。 在过滤后的结果上,我正在运行ng-repeat来显示我现在过滤后的数组中的每个元素。 现在我的问题。 我想将过滤后的输入数组另存为javascript变量,以便以后显示或打印整个结果。 我实际上只希望将过滤后的输入数组保存到javascript变量中,甚至更好,将每个ng-repeat的结果完全保存在一个变量中,但是在应用新的过滤器或再次使用过滤器后进行更新。 我被困在这里。 有没有一种顺利的方法来做到这一点。 还是您有一个更好的主意,什么可以在这里工作? 谢谢了 假设我们有一个用于语言和名称的过滤器:
<select class="form-control"
ng-options="l.language for l in languages"
ng-model="languageModel"
></select>
<select class="form-control"
ng-options="n.name for n in names"
ng-model="nameModel"
></select>
<ul ng-repeat="sq in input| filter:languageModel| filter:nameModel>
<li>Language: {{sq['Language']}}</li>
<li>Name: {{sq['Name']}}</li>
</ul>
现在我想要类似的东西:
$ scope.var = ... //过滤后的结果。
您可以将数组直接存储在ng-repeat
<ul ng-repeat="sq in (filteredInput = (input| filter:languageModel| filter:nameModel))>
现在您可以访问$scope.filteredInput
以获取过滤后的数组
您可以直接从javascript调用过滤器:
$scope.filteredInput = $filter('languageModel')($scope.input);
其中languageModel
是过滤器的名称。 确保在控制器中注入$filter
。
顺便说一句,在<ul>
元素上使用ng-repeat
很奇怪。 更合适的方法是将其放在<li>
:
<ul>
<li ng-repeat="sq in input| filter:languageModel| filter:nameModel>
<span>Language: {{sq['Language']}}</span>
<span>Name: {{sq['Name']}}</span>
<li>
</ul>
您可以在后面的代码中编写自己的过滤器功能,如下所示
$scope.filterlanguage=function(item){
//add your condition if satisfies return or null
if(condition)
{
return item;
}
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.