[英]AngularJs get filtered input from ng-repeat to a Javascript variable?
I'm currently working with AngularJs and am filtering an input array with a number of select boxes. 我目前正在使用AngularJs,并且正在使用多个选择框过滤输入数组。 On the filtered result, I'm running an ng-repeat to display each element in my now filtered array.
在过滤后的结果上,我正在运行ng-repeat来显示我现在过滤后的数组中的每个元素。 Now my question.
现在我的问题。 I want to save the filtered input array as an javascript variable, to later display or print the whole result.
我想将过滤后的输入数组另存为javascript变量,以便以后显示或打印整个结果。 I actually only want either the filtered input array saved to a javascript variable or even better, the results of each ng-repeat saved altogether in a variable but updating itself after applying a new filter or a filter again.
我实际上只希望将过滤后的输入数组保存到javascript变量中,甚至更好,将每个ng-repeat的结果完全保存在一个变量中,但是在应用新的过滤器或再次使用过滤器后进行更新。 I'm stuck here.
我被困在这里。 Is there a smooth way to do this.
有没有一种顺利的方法来做到这一点。 Or do you have a even better idea what would work here?
还是您有一个更好的主意,什么可以在这里工作? Thank's already.
谢谢了 Let's say we have a filter for languages and name:
假设我们有一个用于语言和名称的过滤器:
<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>
Now I want something like : 现在我想要类似的东西:
$scope.var = ... // The filtered result. $ scope.var = ... //过滤后的结果。
You can directly store the array in your ng-repeat
您可以将数组直接存储在
ng-repeat
<ul ng-repeat="sq in (filteredInput = (input| filter:languageModel| filter:nameModel))>
Now you can access $scope.filteredInput
to get the filtered array 现在您可以访问
$scope.filteredInput
以获取过滤后的数组
You can call the filter directly from javascript: 您可以直接从javascript调用过滤器:
$scope.filteredInput = $filter('languageModel')($scope.input);
Where languageModel
is the name of your filter. 其中
languageModel
是过滤器的名称。 Make sure to inject $filter
in your controller. 确保在控制器中注入
$filter
。
By the way, it is weird to have the ng-repeat
on the <ul>
element. 顺便说一句,在
<ul>
元素上使用ng-repeat
很奇怪。 Something more appropriate would be to put it on the <li>
: 更合适的方法是将其放在
<li>
:
<ul>
<li ng-repeat="sq in input| filter:languageModel| filter:nameModel>
<span>Language: {{sq['Language']}}</span>
<span>Name: {{sq['Name']}}</span>
<li>
</ul>
You can write your own filter function in your code behind, something like this 您可以在后面的代码中编写自己的过滤器功能,如下所示
$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.