Нажмите на поле игнорируется, если родители «OnClick» события переплетены в функцию. Я не хочу, чтобы это произошло: как я могу это сделать? Я удалил свой код, чтобы проиллюстрировать проблему.флажок нажмите игнорируется, если родитель OnClick связать
HTML:
<div class="container" data-bind="click: someFunction">
Click me: <input type="checkbox" data-bind="checked: selected" />
</div>
JS:
function vm() {
this.selected = ko.observable(true);
this.someFunction = function(){};
}
ko.applyBindings(new vm());
Fiddle: here. Попытайтесь установить флажок: кажется, что ничего не происходит (не верно: я объясню позже, что произойдет).
Удаление вызова someFunction
в результате контейнера сНа в ожидаемом поведении. См. Пример: here. Очевидно, что это не решает проблему, так как мне нужно также назвать someFunction
.
Я следовал код с помощью отладчика и заметил, как щелчок на самом деле не игнорируется, но длинная цепочка событий происходит последний из которых возвращаясь значение флажка (таким образом, недействительности нажмите).
Чтобы следовать этой цепи с помощью отладчика, я переплетены событие нажмите на флажок.
<div class="container">
Click me: <input type="checkbox" data-bind="click: startDebug, checked: selected" />
</div>
Вы можете открыть свои средства разработки и посмотреть, как ожидаемое поведение достигается в то время как мы находимся внутри функции startDebug (но вернулась к неправильному позже). Скрипт с отладчиком: here.
Просто вернуть 'true' из вашей функции:' this.someFunction = функция() {возвращает истину;}; 'HTTP : //jsfiddle.net/aYkpL/ – nemesv
Это работает! Большое спасибо! – Saturnix