Я использовал пример из учебника нокаута, урезанного до сути, чтобы воспроизвести мою проблему. Я не могу понять, как установить атрибут value тегов в элементах. Я добавил значение для каждой записи self.availableMeals, но, тем не менее, я пытаюсь добавить ее в нее, просто не заполняя выпадающие списки вообще. Когда я пытаюсь добавить optionsValue в привязку, он заполняет выпадающие списки, но не выбирает соответствующее значение. Пожалуйста, помогите!Установка атрибутов выпадающего значения с помощью knockout.js
<h2>Your seat reservations</h2>
<table>
<thead><tr>
<th>Passenger name</th><th>Meal</th><th>Surcharge</th><th></th>
</tr></thead>
<!-- Todo: Generate table body -->
<tbody data-bind="foreach: seats">
<tr>
<td><input data-bind="value: name" /></td>
<td><select data-bind="options: $root.availableMeals, value: meal, optionsText: 'mealName'"></select></td>
</tr>
</tbody>
</table>
// Class to represent a row in the seat reservations grid
function SeatReservation(name, initialMeal) {
var self = this;
self.name = name;
self.meal = ko.observable(initialMeal);
}
// Overall viewmodel for this screen, along with initial state
function ReservationsViewModel() {
var self = this;
// Non-editable catalog data - would come from the server
self.availableMeals = [
{ mealName: "Standard (sandwich)", price: 0 },
{ mealName: "Premium (lobster)", price: 34.95 },
{ mealName: "Ultimate (whole zebra)", price: 290 }
];
// Editable data
self.seats = ko.observableArray([
new SeatReservation("Steve", self.availableMeals[0]),
new SeatReservation("Bert", self.availableMeals[1])
]);
}
ko.applyBindings(new ReservationsViewModel());
Можете ли вы расширить свой образец кода с собственным кодом, что вы пытались и не работает? Основываясь на вашем описании, трудно следить за тем, что работает и не работает ... Вы также можете создать jsfiddle, вы можете начать с этого: http://jsfiddle.net/mq4ZH/ – nemesv
Спасибо за ваш ответ. Вот рабочий jsfiddle с нарушенными изменениями, прокомментированными http://jsfiddle.net/bwbF3/ – Bobbler
В вашем примере у вас есть выпадающее меню с надбавкой, но неясно, откуда должно получиться надбавка. Если я раскомментирую ваши изменения, выпадающий список связывается как указано - это просто привязка к доступным параметрам и отображает имя foodName в качестве текста для каждого элемента. Можете ли вы уточнить, что вы пытаетесь выполнить? Обычно вы не привязываете два выпадающих списка к одному и тому же массиву, чтобы показывать разные поля. –