0

我有一个简单的 viewModel,我从 MVC 创建到 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>

但是,当我尝试运行时,出现以下错误。

“无法解析绑定。消息:ReferenceError:ticketViewModel 未定义;绑定值:foreach:ticketViewModel.Ticket”

任何帮助将不胜感激。

4

1 回答 1

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 元素相关。

于 2012-06-08T07:12:55.783 回答