У меня есть простой viewModel, который я создаю из MVC для строки json, я использую ko.mapping, чтобы выполнить это.Невозможно связать массив ko.observable с циклом foreach
var initialTicketData = {"Ticket": [{"ID":1,"EventID":506596,"Name":"General Admission","Quantity":100,"Price":15.0},{"ID":2,"EventID":506596,"Name":"Backstage Passes","Quantity":25,"Price":50.0}]};
var ticketViewModel = ko.mapping.fromJS(initialTicketData);
ko.applyBindings(ticketViewModel);
Я хочу перебрать этот массив и отобразить данные на странице. Я пытаюсь использовать привязку данных foreach.
<tbody data-bind="foreach: ticketViewModel.Ticket">
<tr>
<td data-bind="text: ticketViewModel.Name"></td>
<td data-bind="text: ticketViewModel.Price"></td>
<td data-bind="text: ticketViewModel.Quantity"></td>
</tr>
</tbody>
Однако, когда я пытаюсь запустить, я получаю следующую ошибку.
"Unable to parse bindings. Message: ReferenceError: ticketViewModel is not defined; Bindings value: foreach: ticketViewModel.Ticket"
Любая помощь была бы принята с благодарностью.
Я пробовал это и все еще не удалось. Немного информации, о которой я не упоминал, является то, что к этой странице прикреплены две модели. Другая модель «eventViewModel» имеет только ko.observables, также загружается через плагин сопоставления, и я использую «eventViewModel.Name» для привязки к имени события. Все хорошо работает с этой моделью. – digitzfone
Если у вас есть несколько ViewModel на странице, вы должны либо: 1) Создайте большую ViewModel, которая содержит две подмодули и выполните 'ko.applyBindings (viewModel);', а затем используйте привязку 'with: ticketViewModel' для область области к подмодельной модели. 2) Используйте форму 'ko.applyBindings (ticketViewModel, document.getElementById ('someElementId'));' чтобы установить модель корневого представления для определенного раздела DOM. –
Я смущен ... Либо: ...? Неужели неудовлетворительная практика состоит в том, чтобы иметь несколько моделей просмотра на странице? – digitzfone