2017-07-10 10 views
0

AngularJsを使用し、colorsizeオプションを2つのドロップダウン(各カテゴリに1つ)に変換する方法を理解しようとしています。md-switchをmd-selectに変換する

私は、選択ボックスのオプションとともにドロップダウンを正常に追加するコードを試しましたが、オプションの1つをクリックすると選択されません。

<md-select ng-model="filter[cat][value]" placeholder="val" multiple> 
    <md-option ng-repeat="value in getItems(cat, data)" ng-value="{{value}}" ng-init="filter[cat]={}"> 
    {{value}} 
    </md-option> 
</md-select> 

デモ:https://codepen.io/mikelkel/pen/rwQKRm(。コードの上に、このデモから削除されていた)

+0

ng-optionsを使用しない特別な理由はありますか? – Chet

+0

こんにちは@Chet私はまだAngularと知り合っています。 ng-optionsをどのように使うことができるかお勧めしますか? – Mikel

答えて

1

いくつかの問題があります:それは=「true」の倍数にする必要があるので、ドキュメントによると

、複数のブール値です。

valueng-model)は、md-optionにしか存在しないため、その範囲には存在しません。したがって、filter[cat][value]は実行できません。 md-selectのドキュメントを見ると、複数のモデルを使用している場合は配列であることがわかります。したがって、ng-modelを単にfilter[cat]に設定すると、その値は["red","yellow"]のようになります。

filterByPropertiesMatchingANDを変更して、同様のプロパティとの文字列一致ができるようにすることができます(シャツの色が赤で、filter.color配列に赤が含まれている場合はtrueを返します)。

私はあなたのcodepen(https://codepen.io/czema/pen/KqbpPE)をフォークし、次のように変更作られた:私はそれを残したが、私は、配列ではなくオブジェクトにfilter[cat]を初期化時にng-initが眉をひそめているにもかかわらず

を。

md-itemを削除しました。

は、私はあなたのfilterByPropertiesMatchingAND機能を変更JavaScriptでfilter[cat]

multiple="true"ng-modelを設定します。現在、$scope.filterには、(カラー名とブール値を持つオブジェクトではなく)各プロパティの配列が含まれています。私はnoSubFilter機能を落としました。

+0

よろしくお願いいたします。 – Mikel

0

使用ng-optionsselectではなくng-repeatoptionタグに。 ng-optionsの構文は少し奇妙ですが、あなたのケースでは、このようなものになるだろう:ng-options="value for value in getItems(cat, data)"

は限り上記のあなたの試みがうまくいかない理由としてngOption https://docs.angularjs.org/api/ng/directive/ngOptions

のマニュアルを読んで、おそらく何かを持っていますng-initと一緒に使用します。このオプションはオプションごとに実行されており、おそらく既存のデータは消去されています。 ng-initは使用しないでください。

+0

ありがとうございます!私はあなたの提案と参考資料をさらに詳しく見ていきます。 – Mikel

+0

こんにちは@Chet、私はそれを動作させるためにmd-selectを変更する多くのバリエーションを試しましたが、運がないです。上にリンクされたデモでは、md-selectを含める最後の試みがあります。あなたはさらに説明したり、実際の例を提供したりしますか? – Mikel

+0

私はmd-selectを通常のselectと間違えてしまったので、私の答えは本当に間違っています。私はより良い助けになる別の答えを加えるつもりです。 – Chet

関連する問題