我有一个名为isEditing
的淘汰赛属性。如果是这样,我想监视当前正在编辑的<input>
之外的任何地方的鼠标点击 - 如果检测到点击,则执行某些操作(在这种情况下为save
)。
这是我到目前为止所做的:
self.editing = ko.observable(false);
if (self.editing()) {
$('html').click(function () {
//dataservice call to save()
self.editing(false);
alert('closed');
});
}
但它目前无法正常工作。我遇到了两个问题:
这是一个小提琴:
如何实现这一目标?我觉得输入上的自定义敲除绑定可以在这里工作,但我不知道如何开始。
答案 0 :(得分:1)
您可能希望检查editing
事件中的click
属性。类似的东西:
self.editing = ko.observable(false);
$('html').click(function () {
if (self.editing()) {
//dataservice call to save()
self.editing(false);
alert('closed');
}
});
你可以做的另一种方法是在editing
更改时监听,然后绑定或取消绑定事件处理程序:
self.editing.subscribe(function (newValue) {
if(newValue) // bind the event handler...
{
$('html').click(function () {
//dataservice call to save()
self.editing(false);
alert('closed');
});
}
else //Unbind it
{
$('html').unbind('click');
}
});