2017-03-23 5 views
0

私は現在AngularJsで作業しており、いくつかの選択ボックスで入力配列をフィルタリングしています。フィルタリングされた結果では、現在フィルタリングされた配列の各要素を表示するためにng-repeatを実行しています。今私の質問。フィルタリングされた入力配列をjavascript変数として保存して、後で結果全体を表示または印刷したいとします。私は実際には、JavaScriptの変数に保存されたフィルタリングされた入力配列か、より良い結果が得られるように、各ng-repeatの結果を変数に保存するだけですが、新しいフィルタまたはフィルタを再度適用した後に更新します。私はここで立ち往生している。これを行うにはスムーズな方法がありますか?それとももっとうまく考えているのですか?ありがとうございました。 のは、私たちが言語や名前用のフィルタを持っているとしましょう:AngularJsは、ng-repeatからフィルタリングされた入力をJavascript変数に取得しますか?

$ scope.var = ... //フィルタリングされた結果:

<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> 

は今、私のような何かをしたいです。

答えて

1

のようなものを独自のフィルター機能を書くことができます今

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

あなたをろ過配列を取得するために$scope.filteredInputにアクセスすることができます

+0

ありがとう、これは私が探していたものです。そしてとても簡単です。私は今幸せです。 –

0

あなたはJavaScriptから直接フィルタを呼び出すことができます。

languageModelは、あなたのフィルタの名前です
$scope.filteredInput = $filter('languageModel')($scope.input); 

。 コントローラーに$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> 
+0

よろしくお願いいたします。もちろん私のコードが適切であることを覚えています;) –

0

あなたは、背後にあるコード内であなたが直接あなたのng-repeatに配列を格納することができ、この

$scope.filterlanguage=function(item){ 

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


} 
+0

ありがとう。私はそれが私にとってうまくいく解決策になると思う。 –

関連する問題