Javascript knockoutjs映射到JSON多个数组
我已经将两个独立的列表(请求和公司)捆绑到一个JSON对象中,并尝试将其映射到JavaScript端的两个淘汰对象 最初,我一次只传递一个列表(JSON中没有数组名)或映射函数中的include行,效果很好。 当我将数组名(例如“RequestList”=)添加到JSON中时,它就停止了工作。谢谢Javascript knockoutjs映射到JSON多个数组,javascript,arrays,json,knockout.js,Javascript,Arrays,Json,Knockout.js,我已经将两个独立的列表(请求和公司)捆绑到一个JSON对象中,并尝试将其映射到JavaScript端的两个淘汰对象 最初,我一次只传递一个列表(JSON中没有数组名)或映射函数中的include行,效果很好。 当我将数组名(例如“RequestList”=)添加到JSON中时,它就停止了工作。谢谢 您的标记中有几个小错误,不允许脚本在映射问题之外工作,我无法真正理解您为什么要尝试对没有类似定义的对象进行映射。。。例如,RequestJS对象具有RequestID和Name,而视图模型不包含任何
您的标记中有几个小错误,不允许脚本在映射问题之外工作,我无法真正理解您为什么要尝试对没有类似定义的对象进行映射。。。例如,RequestJS对象具有RequestID和Name,而视图模型不包含任何这些字段 我已经清理了您的代码以使用映射,您可以在这里看到一个工作示例 因此,我建议您只使用简单映射,使用下面的方法将JS对象转换为视图模型
var fakeData = {
"RequestList": [
{
"RequestID": 12,
"ContactID": 29
}
],
"CompanyList": [
{
"CompanyID": 28,
"Name": "CoName"
},
{
"CompanyID": 29,
"Name": "Name"
}
]};
var myView = ko.mapping.fromJS(fakeData);
$(document).ready(function(){
ko.applyBindings(myView);
});
还有html
<table>
<tbody data-bind="foreach:RequestList">
<tr>
<td data-bind="text:RequestID"></td>
</tr>
</tbody>
</table>
<table>
<tbody data-bind="foreach:CompanyList">
<tr>
<td data-bind="text:CompanyID"></td>
</tr>
</tbody>
</table>
请参阅上的脚本
如果您正计划使用JS字段,则无需执行任何视图定义我发现的一种解决方法是将数据对象的子集传递给映射函数:ko.mapping.fromJS(数据[“RequestList”]、self.requestMapping、self.requests);谢谢你的输入Sam。我提供了我的项目的基本框架作为示例,只包括几个示例字段。假设我想在表中显示请求列表。但是,请求列表仅包括companyID,而不包括公司名称。此外,该页面还允许用户从下拉列表中选择新公司。我将多个列表合并到一个Ajax调用中,因为有人告诉我,数据请求最好是大块的,而不是闲聊的。
var fakeData = {
"RequestList": [
{
"RequestID": 12,
"ContactID": 29
}
],
"CompanyList": [
{
"CompanyID": 28,
"Name": "CoName"
},
{
"CompanyID": 29,
"Name": "Name"
}
]};
var myView = ko.mapping.fromJS(fakeData);
$(document).ready(function(){
ko.applyBindings(myView);
});
<table>
<tbody data-bind="foreach:RequestList">
<tr>
<td data-bind="text:RequestID"></td>
</tr>
</tbody>
</table>
<table>
<tbody data-bind="foreach:CompanyList">
<tr>
<td data-bind="text:CompanyID"></td>
</tr>
</tbody>
</table>