0

以下是相关代码:

<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 函数?

4

2 回答 2

1

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

于 2012-06-15T12:49:14.883 回答
0

我需要将 newCommentText 放入 chats 数组中。

所以代码会变成

self.addComment = function(chat) {
            var newComment = { CourseItemDescription: chat.newCommentText(), };
            chat.CommentList.push(newComment);
            chat.newCommentText("");
           ...
        };
于 2012-06-15T12:51:41.823 回答