我有一個簡單的例子,其中一個對象的基本列表(比方說汽車)綁定到一個select(下拉列表)。一旦用戶選擇它,他可以改變車的價格(出價)。如何在使用敲除選項時更新對象實例而不是原始列表的屬性?
但是,當更改所選值的價格時,用於填充選擇的原始列表也會更新。有沒有辦法分離或克隆選定的值,所以它不會影響原始數組?
整個想法是使用一個數組作爲用戶選擇的基礎,以便他可以在所選實例中自定義他想要的任何屬性,並在原始列表中選擇而不是。
I have a working fiddle here,代碼如下:
HTML:
Select a car:<select data-bind="options: availableCars, optionsText: 'Description', value: selectedCar"></select><br/>
You selected: <span data-bind="text: selectedCar().Description"></span>
<br/>
Bid a price: <input type="text" data-bind="value: selectedCar().Price" />
JS:
var carsListingViewModel = function(availableCars) {
var self = this;
self.availableCars = availableCars;
self.selectedCar = ko.observable();
};
var car = function(make, model, price) {
var self = this;
self.Make = ko.observable(make);
self.Model = ko.observable(model);
self.Price = ko.observable(price);
self.Description = ko.computed(function() {
return self.Make() + ' ' + self.Model() + ' - ' + self.Price();
});
};
var allCars = [
new car('Hyundai', 'i30', 100),
new car('Chrysler', '300C', 200)
];
var model = new carsListingViewModel(allCars);
ko.applyBindings(model);
謝謝!