knockout:数据绑定到foreach绑定中的单个文本框

时间:2012-06-15 04:54:59

标签: javascript knockout.js

以下是相关代码:

<div data-bind="foreach: chats, visible: chats().length > 0">
    <input data-bind='value: $parent.newCommentText' />
    <a href="#" data-bind='click: $root.addComment'>Add comment</a>
</div>

视图模型:

self.newCommentText = ko.observable()
self.addComment = function(chat) {
            var newComment = { CourseItemDescription: self.newCommentText(), };
            chat.CommentList.push(newComment);
            self.newCommentText("");
            $.ajax({
                url: "@Url.Action("AddComment")",
                data: ko.toJSON(newComment),
                type: "post", 
                contentType: "application/json"
            });
        };

问题是,这会将我输入的内容放在所有其他文本框的一个文本框中。我怎样才能使它只绑定到用户输入的文本框并将该数据提供给addComment函数?

2 个答案:

答案 0 :(得分:1)

如果您希望每个聊天都能够添加自己的评论字段,那么您可能希望将newCommentText字段添加到chat对象而不是父对象。然后,您可以阅读它并将其从传递给chat的{​​{1}}对象中清除。

答案 1 :(得分:0)

我需要将newCommentText放在聊天数组中。

因此代码将成为

self.addComment = function(chat) {
            var newComment = { CourseItemDescription: chat.newCommentText(), };
            chat.CommentList.push(newComment);
            chat.newCommentText("");
           ...
        };