フィドルはsampleProductCategories
配列に住む選択肢のすべてを含むリソースをロードします:http://knockoutjs.com/examples/resources/sampleProductCategories.js
各cartLine
オブジェクトは、現在の選択を保持するcategory
とproduct
観測されています。
例えば、ここでは個々のcartLineのバインディングのいずれかです。
<select data-bind='options: sampleProductCategories, optionsText: "name", optionsCaption: "Select...", value: category' />
これは、ドロップダウンのオプションがsampleProductCategories
から来るべきであると述べています。ボックス内の値はname
プロパティである必要があります。選択が行われたときは、cartLineのcategory
に入力する必要があります。
したがって、選択が行われると、category
はsampleProductCategories
配列からの適切なオブジェクトになりました。
{
"products": [{
"name": "1950's Chicago Surface Lines Streetcar",
"price": 26.72
}, {
"name": "1962 City of Detroit Streetcar",
"price": 37.49
}, {
"name": "Collectable Wooden Train",
"price": 67.56
}],
"name": "Trains"
}
さて、のように見える結合2番目のドロップダウン:ような何かカテゴリが選択されている場合
<select data-bind='visible: category, options: category() ? category().products : null, optionsText: "name", optionsCaption: "Select...", value: product' />
このバインディングが表示されます。オプションは、選択されたカテゴリのproducts
配列に由来します。値を選択すると、観測可能なproduct
に配列の適切なオブジェクトが設定されます。 Like:
{
"name": "Collectable Wooden Train",
"price": 67.56
}
したがって、ドロップダウンは連携してネストされたオプションを提供します。
ありがとうライアン。それは本当に役に立ちました。今私はそれが実際に変数を割り当てる 'データバインド'であることを認識しています! – Niner