我想使用 jQuery 和 KnockoutJs 模板在 DOM 中得到以下 HTML:
<div class="messageToAndFromOtherMember" id="13">
<span>the message</span>
<span>2012-12-02 14:05:45.0</span>
</div>
我已经开始编写我的 KO 模板,如下所示:
<div class="messageToAndFromOtherMember" data-bind="attr:{ id: messageId}">
<span data-bind="text: message"></span>
<span data-bind="text: sendDateFmted"></span>
</div>
ajax请求成功后,执行以下js:
var messageViewModel = {
message: response.message,
sendDateFmted: response.sendDateFmted,
messageId: response.messageId
};
ko.applyBindings(messageViewModel);
现在我不确定如何以及在何处实际进行绑定:因为在 ajax 请求完成之前我的消息不存在,并且我可以拥有多条消息......
任何人都可以提出解决方案吗?
编辑 1:我已将此添加到 html 页面:
<div data-bind="template: { name: 'message-template', data: messageViewModel }"></div>
我现在收到以下 js 错误:
未捕获的错误:无法解析绑定。消息:ReferenceError:$messageViewModel 未定义;绑定值:模板:{名称:'message-template',数据:messageViewModel }
编辑 2:我已将代码更改如下:
var messageViewModel = {
data: ko.observable({
message: response.message,
sendDateFmted: response.sendDateFmted,
messageId: response.messageId
})
};
$("<div>",{
class:"messageToAndFromOtherMember"
}).data("bind", "template: { name: 'message-template', data: data }").appendTo("#messagesToAndFromOtherMember");
ko.applyBindings(messageViewModel);
请注意,我需要能够从 jQuery添加元素,以便能够添加一条消息,然后添加另一条消息,依此类推。但是,上面的 jQuery 代码不起作用,我在 DOM中看不到任何数据绑定之类的东西......