Javascript 尝试使用映射将数组从JSON映射到敲除
嗨,我有一个像这样的JSON数组Javascript 尝试使用映射将数组从JSON映射到敲除,javascript,json,knockout-2.0,knockout-mapping-plugin,Javascript,Json,Knockout 2.0,Knockout Mapping Plugin,嗨,我有一个像这样的JSON数组 [{ "id": "537901a53513fa3374bec718", "images": [], "itemImage": "img/3.jpg", "createdDate": "5/18/2014 6:53:25 PM", "location": [ -2.057802, 52.609711 ] }, { "id": "537901a53513fa3374bec710
[{
"id": "537901a53513fa3374bec718",
"images": [],
"itemImage": "img/3.jpg",
"createdDate": "5/18/2014 6:53:25 PM",
"location": [
-2.057802,
52.609711
]
},
{
"id": "537901a53513fa3374bec710",
"images": [
"img/17.jpg"
],
"itemImage": "img/1.jpg",
"createdDate": "5/18/2014 6:53:25 PM",
"location": [
-2.062251,
52.612397
]
}]
我正试图使用ko.mapping.fromJSON/JS,但我一直搞砸了:(
在我的Ajax成功函数中
viewModel.model = ko.mapping.fromJSON(data);
ko.applyBindings(viewModel);
HTML
<div data-bind=" foreach: model">
<div data-bind="text: body"></div>
</div>
我试着跟随John Papa回答的这篇文章,但我认为我的数组是不同的。
我可以手动完成,但对手动构建视图模型感到厌倦:)
我也试过这个,但进一步感到困惑
任何灵魂都能为我指明正确的方向吗?你需要做的就是:
var viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
您可以按如下方式循环它们:
<table class="table table-striped">
<tbody data-bind="foreach: $data">
<tr>
<td data-bind="text: id"></td>
</tr>
</tbody>
</table>
请参见此处的示例:
数据实际上是一个JSON字符串,还是已经是一个javascript对象?您可能需要使用ko.mapping.fromJS,而不是同时使用这两种方法,让它部分地使用JS,但是映射被弄乱了,所以它只将一个项映射到一个可观察的数组,我们刚刚使用上面声明的对象对它进行了测试,看起来很好。我想知道它是否是ajax调用本身——在传递给ko映射插件之前,您能调试并检查数据是否包含您期望的内容吗?嗨,数据没有改变,这是fiddler中的输出,根据验证程序,它也是有效的JSON!那么映射之后,
viewModel.model
实际上包含什么呢?控制台中是否出现任何错误?您好,Yeh尝试了此操作,但我如何访问数组对象,我可以看到它们存在于映射属性中的_KO_映射中,所有内容都在那里,项目如下[0]。映射属性的主体内,如何在HTML中对它们进行迭代,这就是我要说的,因为你的代码基本上是有效的,为了简洁起见,我没有包括额外的所有json,它们只是字符串,但是Id显示大约10/50,然后会出现额外的文本,尽管没有HTML绑定!!!,有点困惑,我知道$data是数组内置的,但不能从代码中引用它,映射的重点不就是要被观察到吗?在代码和HTML中映射后我们如何访问它们?@saj抱歉,在PC上没有。你可以用属性名引用观察到的其他属性。如果希望添加到js对象,请在其中创建js函数和映射。抱歉,如果我没有正确理解你的意思,也许值得再问一个问题,再举一些新的例子。一个问题。每次解决方案中的视图模型更改时,都会应用绑定。我们如何解决这个问题
<table class="table table-striped">
<tbody data-bind="foreach: $data">
<tr>
<td data-bind="text: id"></td>
</tr>
</tbody>
</table>