Knockout.js 敲除中的简单数组映射
我从一个web服务返回了以下JSON,我正试图将其绑定到一个简单的列表,以便为客户显示名称和图像: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/
{"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;
致:
最后,您需要从
中删除带有数据的调试行,因为这会使标记无效
工作示例可在上查看。您的代码不太清楚。您能准确地发布您正在做的事情吗?…很少有事情
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;