2014-01-27 5 views
2

Я только что начал изучать Knockout.js, и у меня возникли некоторые проблемы, и мне нужна помощь.привязка события привязки для knockout.js

В основном я хочу добавить свое событие touchhend в свой список, созданный нокаутом. На данный момент я делаю что-то вроде этого:

HTML:

<ul data-bind="foreach: names"> 
    <li data-bind="text: $data"></li> 
</ul> 

JS:

var names = ['Tom','Jennifer','Jack','Poul']; 

ko.observableArray(names); 

ko.applyBindings(names); 


$('li').on('touchend, function(){ 
... do something 
}); 

Но я предполагаю, что это не правильный способ сделать это? Как «привязать данные» к моему «touchhend» с помощью Knockout (если это способ сделать это)?

Заранее спасибо :)

+0

http://stackoverflow.com/questions/10446873/swipe-action-binding-in-knockoutjs – amin

ответ

7

Вы можете использовать knockoutjs событие связывания:

<li data-bind="text: $data, event: { touchend: $parent.touchEndHandler }"></li> 

http://knockoutjs.com/documentation/event-binding.html

Вы ViewModel связывания не выглядит совсем верно либо, попробуйте вместо этого:

function NamesViewModel() { 
    var self = this; 
    self.names = ko.observableArray(['Tom','Jennifer','Jack','Poul']); 
    self.touchEndHandler = function(data, event) { 
     var element = $(event.target); 
     alert("TouchEnd Triggered"); 
     // can access self here which is the viewmodel 
    }; 
} 

var viewModel = new NamesViewModel(); 
ko.applyBindings(viewModel); 

Пример: http://jsfiddle.net/infernalbadger/pjG8r/

+0

Возможно, вам захотелось написать 'event: {touchend: $ parent.touchEndHandler}', потому что в представлении 'li' будет внутри 'data-bind =" foreach: names "' ... – nemesv

+0

@nemesv Спасибо, только что заметил, что и редактировался, так как ваш комментарий пришел: D –

+0

Спасибо за ваш ответ. Как бы вы передали «этот» (тронутый элемент) методу «touchEndHandler»? –

Смежные вопросы