現在、 KnockoutJS ショッピング カートの例を拡張して、JSON コレクションから既存の行をプリロードしようとしています。
たとえば、次のようなオブジェクトがあります。
var existingRows = [{
"Category":Classic Cars,
"Product":2002 Chevy Corvette,
"Quantity":1,
}, {
"Category":Ships,
"Product":Pont Yacht,
"Quantity":2,
}];
例を変更して、ロード時にグリッドに 2 つの行を入力し、コンボボックスが JSON オブジェクトの項目に事前設定されるようにしようとしています。
このオブジェクトを JSFiddle でうまく動作させることはできないようですが、Cart 関数と CartLine 関数を変更し、ApplyBindings を次のように呼び出します。
var CartLine = function(category, product) {
var self = this;
self.category = ko.observable(category);
self.product = ko.observable(product);
// other code
}
var Cart = function(data) {
var self = this;
self.lines = ko.observableArray(ko.utils.arrayMap(data, function(row) { return new CartLine(row.Category, row.Product);}))
// other code
}
ko.applyBindings(new Cart(existingRows));
これにより、ロード時に 2 つの行が正しく挿入されますが、ドロップダウン リストは設定されません。どんな助けでも大歓迎です:)