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>

ViewModel:

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"
            });
        };

問題は、これにより、1つのテキストボックスに入力したものが他のすべてのテキストボックスに配置されることです。ユーザーが入力しているテキストボックスにのみバインドし、そのデータをaddComment関数で使用できるようにするにはどうすればよいですか?

4

2 に答える 2

1

各チャットに独自のコメント フィールドを追加できるようにする場合は、newCommentTextフィールドをchat親ではなくオブジェクトに追加します。chat次に、それを読み取って、に渡されるオブジェクトからクリアできますaddComment

于 2012-06-15T12:49:14.883 に答える
0

チャット配列内に newCommentText を配置する必要がありました。

コードは次のようになります

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