在 knockout.js 的订阅函数中获取事件
Get event in a subscribe function in knockout.js
我想知道是否可以在knockout.js的subscribe
函数中获取event
参数。
self.selectedOrder.subscribe(function(newValue, action) {
shouter.notifySubscribers(newValue, "selectedOrder");
});
我有一个带行的 table,我想在用户单击某行以 select 时通知其他视图模型。
我需要 event
参数来获取 $(event.currentTarget)
元素并通过添加 CSS class 突出显示该行。
$(event.currentTarget).addClasss('selected').siblings().removeClass('selected');
想着直接用KO做,没找到合适的方法。好像不容易...
data-bind="css: {'selected': $parent.selectedUser().id == id}"
当然,当 selectedUser
为 null 时抛出错误。
在阅读 this article 关于 防止空对象 之后,我只是觉得 KO 对于这个任务并不像 jQuery 那么容易。所以我相信在这种情况下我会选择传统的 jQuery,因为它非常简单。
问题是,我仍然需要 event
对象。
Which of course, was throwing errors when selectedUser was null.
您可以通过在 ViewModel
上添加一个功能来非常简单地完成此操作
self.isSelected = function(id){
return self.selectedUser() && self.selectedUser().id == id;
}
以及对标记的简单更改:
<tr data-bind="click: $parent.selectRow, attr: {'id': id}, css: {'selected': $parent.isSelected(id)}, clickBubble: false">
here -----------------------------------------------------------------------^
已更新 fiddle:http://jsfiddle.net/vhwk1gvy/10/
我想知道是否可以在knockout.js的subscribe
函数中获取event
参数。
self.selectedOrder.subscribe(function(newValue, action) {
shouter.notifySubscribers(newValue, "selectedOrder");
});
我有一个带行的 table,我想在用户单击某行以 select 时通知其他视图模型。
我需要 event
参数来获取 $(event.currentTarget)
元素并通过添加 CSS class 突出显示该行。
$(event.currentTarget).addClasss('selected').siblings().removeClass('selected');
想着直接用KO做,没找到合适的方法。好像不容易...
data-bind="css: {'selected': $parent.selectedUser().id == id}"
当然,当 selectedUser
为 null 时抛出错误。
在阅读 this article 关于 防止空对象 之后,我只是觉得 KO 对于这个任务并不像 jQuery 那么容易。所以我相信在这种情况下我会选择传统的 jQuery,因为它非常简单。
问题是,我仍然需要 event
对象。
Which of course, was throwing errors when selectedUser was null.
您可以通过在 ViewModel
self.isSelected = function(id){
return self.selectedUser() && self.selectedUser().id == id;
}
以及对标记的简单更改:
<tr data-bind="click: $parent.selectRow, attr: {'id': id}, css: {'selected': $parent.isSelected(id)}, clickBubble: false">
here -----------------------------------------------------------------------^
已更新 fiddle:http://jsfiddle.net/vhwk1gvy/10/