モデルにバインドする選択マルチがあり、2 番目のモデルを使用して以前に選択した値を選択したいと考えています。これは単純で簡単なことだと思っていましたが、ノックアウトでは、必要以上に難しいようです. これが私がこれまでに持っているものです。フィドラー
セレクトマルチ
<select data-bind="options:availableThings,optionsText: 'Title', selectedOptions: selectedThings" size="5" multiple="true"></select>
私のモデル
var initialThingsModel = [
{"Id":1,"Title":"First"},
{"Id":2,"Title":"Next"},
{"Id":3,"Title":"Another"},
{"Id":4,"Title":"Last"}
];
var initialSelectedThingsModel = [
{"Id":2,"Title":"Next"},
{"Id":4,"Title":"Last"}
];
次に、最初のモデルをバインドする残りの部分と、選択した値を保存して送信する配管です。
var viewModel = {
availableThings: ko.observableArray(initialThingsModel),
selectedThings: ko.observableArray(initialSelectedThingsModel),
save: function () {
$.ajax({
url: '/home',
type: 'POST',
data: ko.toJSON(this.selectedThings),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data.Message);
}
});
}
};
ko.applyBindings(viewModel);
私が直面する問題は、initialSelectedThingsModel をバインドして、選択したアイテムが選択リストに事前に入力されるようにすることです。
幅広い質問がありますが、ノックアウトは正しい解決策ですか、それともバックボーンはこの種のことを達成するためのより簡単な方法を提供しますか?