gpt4 book ai didi

javascript - 在页面加载时调用 Knockout JS 鼠标悬停事件

转载 作者:行者123 更新时间:2023-11-30 17:06:43 27 4
gpt4 key购买 nike

我通过 knockout 将鼠标悬停事件附加到一堆输入。由于输入位于 ko foreach block 中,因此正在创建大量输入,并且在页面加载时,会为页面上添加的每个输入调用 mouseover 事件。这使我的页面加载非常缓慢。知道为什么在页面加载时调用该事件吗?

<!-- ko foreach: FilteredForecasts -->
<td>
<input class="tiny" type="number" min="0" max="80" data-bind="disable: Elapsed() || (!$parent.ResourceId() || $parent.EditingName()), value: Hours, css: { 'pending': Pending, 'saved': !Pending() && Hours() && !Elapsed(), 'highlighted': Highlighted, 'elapsed': Elapsed }, attr: { id: 'h_' + $index(), title: (!$parent.ResourceId() || $parent.EditingName() ? 'You must first save a resource to enter hours.' : TotalHoursString()) }, event: { mouseover: UpdateTotalHours($parent.ResourceId()) }" />
</td>
<!-- /ko -->

self.UpdateTotalHours = function (resourceId) {
if ((resourceId != null && resourceId != undefined) && self.Week() && self.Year() && (self.TotalHours() === null || self.TotalHours() === undefined)) {
alert('here');
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf8',
url: staffingUtilities.baseUrl + 'Forecasting/GetResourceTotalUsage/',
data: JSON.stringify({
id: resourceId,
year: self.Year(),
week: self.Week()
}),
success: function (data) {
if (data == 0) {
self.TotalHours(null);
return;
}

self.TotalHours(data);
}
});
}
};

最佳答案

您需要将鼠标悬停调用包装在一个函数中,括号会导致在绑定(bind)对象时执行 UpdateTotalHours:

mouseover: function(){ UpdateTotalHours($parent.ResourceId()); }

参见:http://knockoutjs.com/documentation/event-binding.html

关于javascript - 在页面加载时调用 Knockout JS 鼠标悬停事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27849267/

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