消息模型
function MessageModel(content) {
var self = this;
self.content = content;
}
RoomViewModel
self.currentMessage = ko.observable(new MessageModel(""));
self.addMessage = function () {
self.messages.push(self.currentMessage());
self.currentMessage(new MessageModel(""));
};
视图
<form data-bind="submit: addMessage">
<input data-bind='value: currentMessage.content, valueUpdate: "afterkeydown"' />
<button id="ButtonSendMessage" type="submit">Send</button>
</form>
当用户在输入框中键入内容时,要更新当前消息的内容属性,而当我单击“添加”时,我要向currentMessage添加内容。但是内容总是空白。
最佳答案
可能是因为内容不是可观察的,并且值bind是错误的,因为currentMessage
是可观察的,因此要绑定您的任何属性,必须像currentMessage().prop
那样进行操作,或者在元素上下文中使用with: currentMessage
绑定,请尝试一下像这样:
function MessageModel(content) {
var self = this;
self.content = ko.observable(content);
}
我也建议您使用
textInput
绑定: <form data-bind="submit: addMessage">
<input type="text" data-bind='textInput: currentMessage().content' />
<button id="ButtonSendMessage" type="submit">Send</button>
</form>
textInput绑定:
textInput绑定将文本框()或文本区域()与viewmodel属性链接在一起,从而在viewmodel属性和元素值之间提供双向更新。与值绑定不同,textInput为所有类型的用户输入(包括自动完成,拖放和剪贴板事件)从DOM提供即时更新。
参考:TextInput Bind
关于javascript - 如何将当前对象绑定(bind)到文本输入?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34257271/