2014-10-22 2 views
0

Я знаю, что это должно быть очень легко для вас. Но я искал этот код часами и не вижу, где я ошибся.Knockout click data-bind not firing

Я пытаюсь показать 2 ввода, когда элемент списка щелкнул его значением. Но ничего не получается. Итак, я попробовал просто поставить простую кнопку с событием клика. Но он все равно не срабатывает. Не могли бы вы рассказать мне, что не так с моим кодом?

<!--HTML--> 
<input type="button" data-bind="click: $root.onClick"> 

//JS 
//that the basic. the full code in jsfiddle 
function Workers(){ 
     self = this; 
     self.onClick = function() { 
      alert('2'); 
     }; 
    } 

    ko.applyBindings(new Workers()); 

http://jsfiddle.net/cr7cy36m/

Спасибо миллион! Ран

ответ

4

Вам нужно сделать self локальной переменной, а не глобальный, объявив его var:

function Workers(){ 
    var self = this; 
    self.onClick = function() { 
     alert('2'); 
    }; 
} 

Без var, self в этой функции та же self, как у вас есть в функции Worker , поэтому его значение перезаписывается версией Worker.

См http://jsfiddle.net/cr7cy36m/1/

+1

Я так люблю тебя !!! (и ненавижу себя одинаково) – Ran