消息模型

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/

10-12 12:38
查看更多