0

ng-repeat入力ボックスでフィルタリングされた があります。このリストには.activeと の.disabled項目があります。すべてが正しくレンダリングされますが、クエリでフィルタリングすると、表示のインデックスが変更されたため、アクティブなクラスと無効なクラスがめちゃくちゃになります。

問題を示すjsFiddleを次に示します。2 番目の行が強調表示されていることがわかります (クラスactiveが追加されました)。入力ボックスに「iphone」と入力してみてください。2 行目は、アクティブでない場合でも強調表示されます。

どうすればこれを回避し、信頼できるデータを自分のファイルに入れることができますng-repeatか?

[編集] ただし、( によって生成されたng-if) 正しいタグは、フィルタリングしても正しく一致します (「iPhone」でもう一度試してください)...

4

2 に答える 2

0

これは素晴らしい質問です。フィルタが適用されるたび$indexに、現在のフィルタされたリストに従って が変更されるためです。

これに対処する方法は次のとおりです。フィルター処理されたリストを変数に割り当ててから、$index でデータを一致させます。

ng-repeat='item in (filtered_tags_and_devices = (tags_and_devices | filter:{ name: assoc_query }))'

そして、基準を次のように変更します

filtered_tags_and_devices[$index].id 

DEMO

于 2013-08-20T20:37:42.737 に答える
0

使用するtags_and_devices[$index]場所と を使用する場所がありますitemitemng-repeat している配列内の実際のアイテムを指しているため、フィルタリングしても、期待するアイテムを取得できます。コードで何をしたいのか完全にはわかりませんが、あなたが望むのはitem.

tags_and_devices[$index](モデル内の項目のインデックスではなく)内のインデックスを使用してng-repeat、モデル内でルックアップを行います。

于 2013-08-20T20:35:52.117 に答える