如何将当前对象绑定到文本输入?

时间:2015-12-13 22:42:29

标签: javascript knockout.js

MessageModel

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添加内容。但内容总是空白。

1 个答案:

答案 0 :(得分:2)

也许是因为内容不是一个可观察的,而且值绑定是错误的beacuse currentMessage是一个可观察的,所以要绑定你必须做的任何属性{{1或者在元素上下文中使用currentMessage().prop绑定,尝试这样的事情:

with: currentMessage

我还建议你使用function MessageModel(content) { var self = this; self.content = ko.observable(content); } bind:

textInput
  

textInput绑定:

     

textInput 绑定将文本框()或文本区域()与viewmodel属性链接,提供viewmodel属性和元素值之间的双向更新。与值绑定不同,textInput为DOM提供所有类型用户输入的即时更新,包括自动完成,拖放和剪贴板事件。

     

价:TextInput Bind