使用淘汰赛的文件正文的条件onClick事件?

时间:2013-05-29 00:36:21

标签: knockout.js

我有一个名为isEditing的淘汰赛属性。如果是这样,我想监视当前正在编辑的<input>之外的任何地方的鼠标点击 - 如果检测到点击,则执行某些操作(在这种情况下为save)。

这是我到目前为止所做的:

self.editing = ko.observable(false);
    if (self.editing()) {
        $('html').click(function () {
            //dataservice call to save()
            self.editing(false);
            alert('closed');
        });
    }

但它目前无法正常工作。我遇到了两个问题:

  1. 如果我在输入内部点击,我会收到警告
  2. 单击时,self.editing的值不会被重置。
  3. 这是一个小提琴:

    http://jsfiddle.net/PTSkR/81/

    如何实现这一目标?我觉得输入上的自定义敲除绑定可以在这里工作,但我不知道如何开始。

1 个答案:

答案 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');
   }
});