Knockout.js 敲除中的简单数组映射

Knockout.js 敲除中的简单数组映射,knockout.js,Knockout.js,我从一个web服务返回了以下JSON,我正试图将其绑定到一个简单的列表,以便为客户显示名称和图像: {"Customers":{"data":[{"CustomerID":1,"CustomerName":"Jones","CustomerImage":"~/Images/Customers/Jones02.gif","CustomerEnabled":true},{"CustomerID":7,"CustomerName":"Hughes","CustomerImage":"~/Images/

我从一个web服务返回了以下JSON,我正试图将其绑定到一个简单的列表,以便为客户显示名称和图像:

{"Customers":{"data":[{"CustomerID":1,"CustomerName":"Jones","CustomerImage":"~/Images/Customers/Jones02.gif","CustomerEnabled":true},{"CustomerID":7,"CustomerName":"Hughes","CustomerImage":"~/Images/Customers/Hughes057847.gif","CustomerEnabled":true},{"CustomerID":13,"CustomerName":"Michaels","CustomerImage":"~/Images/Customers/M12012.gif","CustomerEnabled":true},{"CustomerID":123,"CustomerName":"Bernard","CustomerImage":"~/Images/Customers/kb040412.gif","CustomerEnabled":true}]}}
在我的标记中

<section id="CustomerList">
    <ul data-bind: 'foreach: data'>
        Data: <span data-bind="text: JSON.stringify(ko.toJS($data), null, 2)"></span>

        <li>
            <span data-bind="text:CustomerID"></span>
        </li>
    </ul>
</section>
我可以进入getCustomers()回调并验证JSON是否返回,如上所述,我还可以查询ViewModel.Customer并查看分配的数据,但没有写入任何内容。 我认为这是微不足道的,但到目前为止还没有任何效果

有什么想法吗


谢谢

也许装订应该是这样的:

<ul data-bind="foreach: Customer.data">
    Data: <span data-bind="text: JSON.stringify(ko.toJS($data), null, 2)"></span>

    <li>
        <span data-bind="text: CustomerID"></span>
    </li>
</ul>
dataService.getCustomers(function (data) {
   ViewModel.MyCustomerObservableArray(data.Customers.data);
   ko.applyBindings(ViewModel);
});
在:

更改:

<ul data-bind: 'foreach: data'>
ViewModel.Customer = data.Customers;
致:

最后,您需要从
中删除带有数据的调试行,因为这会使标记无效


工作示例可在

上查看。您的代码不太清楚。您能准确地发布您正在做的事情吗?…很少有事情

  • 客户财产需要成为oberservablearray
  • 此外,您还需要首先使用以下命令将json转换为JS对象 fromJSON(serverdata、MappingOptions、viewModel)。你 那就不需要在飞行中严格控制了
  • 服务器数据需要与viewmodel正确映射 财产。数组中的对象有多个键,但 在您的视图中,您没有提到剩余的“键”属性。对于 您需要使用knockoutjs
    ignore

  • 如果我将映射更改为this gives:Uncaught Error:无法解析绑定,您可以在

    中看到映射是如何工作的。消息:ReferenceError:未定义CustomerID;Bindings value:text:CustomerIDIf我将其更改为,这将给我:未捕获错误:无法解析绑定。消息:ReferenceError:未定义CustomerID;绑定值:text:CustomerIDThanks,但结果相同$数据在第一个范围内呈现整个JSON结构,但是绑定时没有呈现单个项,我仍然会得到错误。使用JSFIDLE更新了我的答案。我认为
      中的调试行使标记无效。现在应该可以了。谢谢,我想你是对的。它现在使用与上面的JSFIDLE相同的方法工作。非常感谢
      <ul data-bind: 'foreach: data'>
      
      <ul data-bind: 'foreach: Customer>
      
      dataService.getCustomers(function (data) {
          ViewModel.Customer = data.Customers;
          ko.applyBindings(ViewModel);
      });
      
      ViewModel.Customer = data.Customers;
      
      ViewModel.Customer = data.Customers.data;