我正在使用NameCtrl在用户列表中提供更具体的用户信息。当显示的用户的状态发生变化时,将调用事件OnPropertyClosed。不幸的是,在我的应用程序中,它有时被连续调用超过5次,具有相同的用户和相同的状态。这应该发生还是我可以做些什么来阻止?
我有两个术语Knockout-Bindings。将为每个用户执行init-Block。 nameCtrl-Binding位于显示用户名和状态的范围i上。
ko.bindingHandlers['nameCtrl'] = {
init: function (element, valueAccessor) {
var value = valueAccessor();
var user = ko.unwrap(value);
$(element).hover(function () {
NameCtrlViewModel.prototype.showOOUI(this, user);
}, function () {
NameCtrlViewModel.prototype.hideOOUI();
});
}
};
statusIndicator-Binding位于显示状态的Element上。使用方法GetStatus(由NameCtrl提供)i" register" StatusChange-Listener的用户,它执行OnStatusChangedEvent。
ko.bindingHandlers.statusIndicator = {
init: function (element, valueAccessor) {
var value = valueAccessor();
var user = ko.unwrap(value);
$(element).data("user", user);
NameCtrlViewModel.prototype.nameCtrl.GetStatus(user, "1");
}
};
当状态改变时,这就是我将我的函数设置为要调用的函数
self.nameCtrl.OnStatusChange = self.onStatusChange;
在这里,我使用当前状态更新我的statusIndicator。
NameCtrlViewModel.prototype.onStatusChange = function (user, status, id) {
};
现在如前所述,我的函数onStatusChange有时被称为mor,而不是连续5次具有相同的状态和用户。在包含许多用户的列表中,我担心它会降低我的应用程序速度。
问候Themuron