web-dev-qa-db-ja.com

ng-optionsのAngularJs条件付き表示

私は今数時間探していましたが、どこにも問題の答えが見つからないようです。以前は実装できたのを覚えていますが、何らかの理由でコードを失い、それを機能させるために何をしたのか思い出せないようです。

Ng-optionsを使用して、選択ボックス内の配列からデータを表示しようとしています。あれは問題ありません。実装する必要があるのは、特定の配列値のみが選択ボックスに表示/含まれることです。

私のデータは次のとおりです:

$scope.chartList = [ { "id" : 1, "name" : "chart 1", "order" : 1, "active" : false },
                     { "id" : 2, "name" : "chart 2", "order" : 2, "active" : true },
                     { "id" : 3, "name" : "chart 3", "order" : 3, "active" : true },
                     { "id" : 4, "name" : "chart 4", "order" : 4, "active" : true }, 
                     { "id" : 5, "name" : "chart 5", "order" : 5, "active" : true } ];

そして私のHTMLは次のようになります:

<select ng-model="toAddChart" ng-options="chart.id as chart.name for chart in chartList | filter:chart.active=='false'">
  <option value=""></option>
</select>

したがって、私が起こしたいのは、 "active"属性の値がfalseの場合、配列項目が選択リストに表示/含まれるのはこのときだけです。フィルター属性のさまざまな順列を試してみましたが、何も機能しないようです。

タグでng-repeatを簡単に使用してng-showを使用できることはわかっていますが、どこかで読んだことを覚えています(ここでも、どこにあるのかわかりません)。それを実装する適切な方法ではなく、ng-optionsの使用が正しいことを覚えています。仕方。

カスタムJavaScriptフィルターを作成せずにそれを以前に実行できたことは本当に確かですが、私の人生では、それをどのようにしたのか思い出せません。誰かができることを願っています

私はアイデアがなくなったので、誰かがこれを手伝ってくれるといいのですが。

更新:

素晴らしいスコット、私はそれを持っていると思います。

の代わりに:

filter:chart.active=='false'

そのはず:

filter:chart.active='false'

使用される等号の数です。 facepalm

皆さん、回答ありがとうございます。

13
Stellaire

素晴らしいスコット、私はそれを持っていると思います。

の代わりに:

filter:chart.active=='false'

そのはず:

filter:chart.active='false'

使用される等号の数です。 Facepalm

皆さん、回答ありがとうございます。

19
Stellaire

ちょっと代わりにそのより良い使用

ng-options = "chart.id as chart.name as chartList in chartList | filter:{active:true}"

4
Prafull