このコードについて
function Order(name, initialMeal) {
var self = this;
self.name = name;
self.meal = ko.observable(initialMeal);
}
function OrdersViewModel() {
var self = this;
self.availableMeals = [
{ menuItem:"Chicken", calories:1000, price:12 },
{ menuItem:"Eggs", calories:900, price:10 },
{ menuItem:"Fries",calories:700, price:15 }
];
self.orders = ko.observableArray([
new Order("Mike", self.availableMeals[0]),
new Order("John", self.availableMeals[0]),
new Order("Larry", self.availableMeals[0])
]);
self.addOrder = function(){
self.orders.push(new Order("", self.availableMeals[0]));
}
}
ko.applyBindings(new OrdersViewModel());
私は次の見解を持っています
<tbody data-bind="foreach: orders">
<tr>
<td><input data-bind="value: name" /></td>
<td><select data-bind="options: $root.availableMeals, value: meal, optionsValue: 'price', optionsText: 'menuItem'"></select></td>
<td data-bind="text: meal().price"></td>
</tr>
</tbody>
おそらくノックアウトの例で見つけることができます。問題は、optionsValueがその上に存在する場合、最後のバインディングmeal()。priceが機能しないように見えることです。optionsValueを削除すると、問題なく動作します。私は何かが足りないのですか?ありがとう。