Javascript 尝试使用映射将数组从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

嗨,我有一个像这样的JSON数组

[{
    "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>