私はng-repeatを使用して、Angular で表示するオブジェクトを反復処理しています。これらの各オブジェクトには、オブジェクトのプロパティを含む select 要素が含まれています。
オブジェクトの他のプロパティごとに選択した値に基づいてオプションをフィルター処理したいのですが (うーん、これは思ったより説明が難しいです)、問題はこれらが Breeze エンティティであり、従来の方法を使用すると Angular がスタックを提供することですBreeze エンティティの周期的な性質により、オーバーフロー例外をスローします。
フィルタリングを処理するためのより静的な関数を作成する方法について、Ward による良い例を見つけましたが、より動的にしようとして苦労しています -
ビューには、使用可能なファイターのリストがあり、ファイトのウェイト クラスでフィルタリングする必要があるため、ng-repeat ファイトの各ファイトには、ウェイト クラス セレクターと 2 つのファイター セレクターがあります。
試行 1 -
<select
ng-model="fight.firstFighter"
ng-options="f.fullName for f in fighters | filter: fighterFilter">
</select>
<select
ng-model="fight.weightClass"
ng-options="w.fullName for w in weightClasses">
</select>
$scope.fighterFilter = function (fighter) {
var fight = ???;
return fight.weightClass ?
-1 != fighter.weightClass === fight.weightClass :
true;
};
示されているように何も送信しようとしましたが、問題は、使用可能な各戦闘機を反復処理するときに戦闘機の値のみを送信するため、fight.weightClass の値を取得できないことです。
戦いのコンテキストと私が繰り返している戦闘機を取得する方法のアイデアはありますか? または、この方法でフィルタリングするためのより良いアプローチはありますか?
ファイターズストラクチャー
戦士
- ID
- 名前
- WeightClassId
- WeightClass (ナビゲーション プロパティ)
喧嘩
- ファーストファイター
- セカンドファイター
- WeightClassId
- WeightClass (ナビゲーション プロパティ)
重量クラス
- ID
- 重さ
- 説明
- フルネーム
編集
私は問題なく単一の戦いの結果をフィルタリングすることができました。問題は、ng-repeat ディレクティブの下で同じビューで戦いごとにこれを動的に処理する方法です。「ファイト」と「ファイター」のコンテキストを取得して、両方のエンティティの「ウェイト クラス」の値が一致するかどうかを比較できません。