我有一个简单的viewModel,我从MVC for到json字符串创建,我使用ko.mapping来完成此任务。
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>
但是,当我尝试运行时,我收到以下错误。
&#34;无法解析绑定。消息:ReferenceError:未定义ticketViewModel;绑定值:foreach:ticketViewModel.Ticket&#34;
非常感谢任何帮助。
答案 0 :(得分:1)
请改为尝试:
<tbody data-bind="foreach: Ticket">
<tr>
<td data-bind="text: Name"></td>
<td data-bind="text: Price"></td>
<td data-bind="text: Quantity"></td>
</tr>
</tbody>
绑定始终与当前上下文相关。当您说ko.applyBindings(ticketViewModel);
时,您将“根”上下文设置为ticketViewModel
。然后当你使用'foreach'时,你会添加一个新的上下文,'foreach'中的绑定现在相对于每个Ticket元素。