[英]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.