gpt4 book ai didi

javascript - 为什么这个 knockout 方法接收的是一个表单元素而不是它嵌套的对象?

转载 作者:行者123 更新时间:2023-12-01 13:12:12 25 4
gpt4 key购买 nike

我有这个 HTML:

<ul class="chat_list" data-bind="foreach: chats">
<li>
<div class="chat_response" data-bind="visible: CommentList().length == 0">
<form data-bind="submit: $root.addComment">
<input class="comment_field" placeholder="Comment…"
data-bind="value: NewCommentText"
/>
</form>
</div>
</li>
</ul>

和这个 JavaScript:

function ChatListViewModel(chats) {

// var self = this;

self.chats = ko.observableArray(ko.utils.arrayMap(chats, function (chat) {
return { CourseItemDescription: chat.CourseItemDescription,
CommentList: ko.observableArray(chat.CommentList),
CourseItemID: chat.CourseItemID,
UserName: chat.UserName,
ChatGroupNumber: chat.ChatGroupNumber,
ChatCount: chat.ChatCount,
NewCommentText: ko.observable("")
};
}));

self.newChatText = ko.observable();

self.addComment = function (chat) {
var newComment = { CourseItemDescription: chat.NewCommentText(),
ParentCourseItemID: chat.CourseItemID,
CourseID: $.CourseLogic.dataitem.CourseID,
AccountID: $.CourseLogic.dataitem.AccountID,
SystemObjectID: $.CourseLogic.dataitem.CommentSystemObjectID,
SystemObjectName: "Comments",
UserName: chat.UserName
};
chat.CommentList.push(newComment);
chat.NewCommentText("");
};
}
ko.applyBindings(new ChatListViewModel(initialData));

当我进入调试器时,它显示 addComment() 函数的 chat 参数是一个表单元素而不是聊天对象。

为什么会这样?

最佳答案

因为 KO 行为。要将聊天变量传递给提交处理程序,您可以使用:

<ul class="chat_list" data-bind="foreach: chats">
<li>
<div class="chat_response" data-bind="visible: CommentList().length == 0">
<form data-bind="submit: function(form){$root.addComment($data, form)}">
<input class="comment_field" placeholder="Comment…" data-bind="value: NewCommentText" />
</form>
</div>
</li>
</ul>

关于javascript - 为什么这个 knockout 方法接收的是一个表单元素而不是它嵌套的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11303840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com