ノックアウト kendo.js を使用して、ノックアウト forEach テンプレートで剣道ドロップダウン リスト コントロールを宣言しようとしています。これにより、新しい項目がノックアウト監視可能配列に追加されると、新しい剣道ドロップダウン リストが UI にレンダリングされます。
最初に、ドロップダウンリストの選択した値を、ドロップダウンリストの指定された「データ」配列内のエントリ オブジェクト全体にバインドできないことに気付きました。
この問題を克服するために、次のスレッドで RP Niemeyer の提案に従いました: Set the binding of a dropdown in knockout to an object
これですべて動作します。偉大な。
私の問題は、テンプレートに 2 番目のドロップダウン リストを追加しようとするときです。データは、計算されたオブザーバブルから返されるオブジェクトの配列プロパティにバインドされます...生徒、2 番目は、1 番目のドロップダウン リストで現在選択されている生徒のすべてのクラスを表示し、3 番目は、2 番目のドロップ ダウン リストで現在選択されているクラスのすべてのテストの成績を表示します。....)
私の問題を示すために、RP Niemeyer の元のフィドルに基づいてフィドルを作成しました。
以下の行をフィドルに追加しました。
HTML:
<input data-bind="kendoDropDownList: { dataTextField: 'caption', dataValueField: 'id', data: selectedChoice().shapes, value: selectedShapeId }" />
JS:
this.choices = ko.observableArray([
{ id: "1", name: "apple", shapes: ko.observableArray([ { id: "5", caption: "circle" }, { id: "6", caption: "square" }]) },
{ id: "2", name: "orange", shapes: ko.observableArray([ { id: "5", caption: "circle" }]) },
{ id: "3", name: "banana", shapes: ko.observableArray([ { id: "5", caption: "circle" }, { id: "6", caption: "square" }, { id: "7", caption: "triangle" }]) }
]);
繰り返しになりますが、最初のドロップダウン リストで選択を変更すると (selectedId が変更され、selectedChoice が変更される)、UI 要素が「selectedChoice」または selectedChoices のプロパティにバインドされ、それらのバインディングが再設定されると予想していました。 -評価され、UI がそれぞれ更新されました。
何か不足していますか?または、この「ドロップ ダウン リストの連鎖」動作を実現するためのより良い方法はありますか (ノックアウト テンプレートと剣道ドロップ ダウン リスト コントロールを使用しながら)?