Mvvm 淘汰赛没有';t从ajax获取数据后更新html

Mvvm 淘汰赛没有';t从ajax获取数据后更新html,mvvm,knockout.js,Mvvm,Knockout.js,我将数据列表绑定到HTML,每个列表中都有通过ajax获取详细信息的按钮。我想将回调数据绑定到模型的成员,在ajax回调之后,对象有数据,视图收到(ko.toJSON(d,null,2))对象。但是HTML不会更新数据。 我不知道怎么了。请帮忙。多谢各位 Html: 我想我已经弄明白了(在清理小提琴之后)。你的绑定是 text: d.message 但应该是这样 text: message 因为d是绑定的上下文。因此,实际上您正在尝试绑定到不存在的d.d.message。将其替换为text

我将数据列表绑定到HTML,每个列表中都有通过ajax获取详细信息的按钮。我想将回调数据绑定到模型的成员,在ajax回调之后,对象有数据,视图收到(ko.toJSON(d,null,2))对象。但是HTML不会更新数据。 我不知道怎么了。请帮忙。多谢各位

Html:



我想我已经弄明白了(在清理小提琴之后)。你的绑定是

text: d.message
但应该是这样

text: message
因为
d
是绑定的上下文。因此,实际上您正在尝试绑定到不存在的
d.d.message
。将其替换为
text:message
似乎有效,不是吗

请参阅。

您应该使用

<div data-bind="with: d">
    <span data-bind="text: message"></span>

因为当您在其中使用data bind=“text:message”时,data bind=“with:d”将为绑定上下文创建范围,在本例中,它将引用父绑定上下文


这里的完整代码:

我在淘汰文档上找到了问题。

JSFIDLE不能正常工作:您忘了添加对Knockout和jQuery的引用。我更改了你的fiddle(请参阅),在我的Firefox JS控制台中,我可以看到它正在尝试加载数据,但无法加载(因为URL当然不存在)。我的意思是,如果你能提供一个只存在你遇到的问题的JSFIDLE,那将非常有趣。因此,用硬编码数据(以您从ajax调用中获得的形式)替换执行ajax调用的代码。通过这种方式,人们可以实际测试它,看看有什么问题。您好,我只是在您单击Ajax get时添加了模拟数据,对象toJSon将绑定到div,但不会得到更新。但是当仅使用d(data bind=“text:d.message”)时,它会显示一个对象。在您修改JSFIDLE后,请单击“更新”并向我们提供该URL(它将更改为不再是/petermorlion/sc8fX/2)。您好,在我的对象中,text:message是列表项的消息。当我们应用绑定时,它将绑定,但text:d.message是来自ajax回调对象的消息。
<div data-bind="with: d">
    <span data-bind="text: message"></span>