2017-06-29 2 views
1
klicken

Auf meiner Seite möchte ich in einem obdervable geklickt der Benutzer wich Taste verfolgen:Stellen beobachtbar Wert auf die Schaltfläche

self.action = ko.observable(); 

I setAction eine Funktion schreiben kann und es mit einem Parameter auf jeder Taste Klick aufrufen, etwas wie folgt aus:

self.setAction = function (action) { 
    self.action(action); 
} 

Aber ich frage mich, ob es einen Weg, es zu tun ist, ohne jedes Mal die setAction Funktion aufrufen zu müssen?

+0

[Event Delegation in Knockout] (http://www.knockmeout.net/2012/11/revisit-event-delegation-in-knockout-js.html) –

Antwort

2

Man könnte es inline tun:

<button type="button" class="btn" data-bind="click: action.bind($data, 'btn-name')">btn-name</button> 

oder übergeben die tatsächliche Schaltfläche Objekt

<button type="button" class="btn" data-bind="click: action.bind($data, this)">btn-name</button> 

Oder wenn Ihr Problem ist die Tatsache, dass Sie das Klick-Ereignis jedes Mal schreiben, könnten Sie Fügen Sie jeder Schaltfläche eine Klasse hinzu und fügen Sie einen Ereignis-Listener hinzu, um die Aktion festzulegen.

<button type="button" class="btn actionBtn">btn-name</button> 

$(".actionBtn").click(function(){ 
    var btn = $(this); 
    viewModel.action(btn); 
}); 
+0

Du meinst, wie jquery Attribute verwenden? Wie die ID des Knopfes. $ (this) .attr ('id') –

+0

Der Wert von 'btn' sieht aus wie 'div # cancel.tab.actionBtn.tabSelected' Gibt es eine Möglichkeit, nur den Namen zu erhalten? – user3378165

+0

Irgendeine Idee, wie man das erreicht? – user3378165

Verwandte Themen