2016-07-29 4 views
1

Von dem, was ich verstehe, sollte dies einfach sein. Ich versuche, eine Zeile in einer Tabelle klickbar zu machen und dazu wollte ich location.href auf meinem tr verwenden.Kann nicht herausfinden, wie man ein Attribut zu einem Klick in Knockout.js setzen

Mein href ist mit einer ID erstellt, die ich aus Datenbindung erhalte. Wie kombiniere ich den Klick und das Attribut? Ich fühle, dass mir hier etwas fehlt.

<tr data-bind="click : attr:{'location.href' : '/project/details/' + m.Id}"> 

Antwort

2

Sie fügen hier ein paar Knockout-Konzepte zusammen.

Die Bindung attr bindet HTML-Attribute für dieses Element an die Werte in Ihrem Modell.

Die Bindung click ist eine Funktion, die beim click -Ereignis aufgerufen wird (normalerweise würden Sie auf eine Funktion in Ihrem Ansichtsmodell verweisen, aber Sie können eine anonyme Funktion inline einfügen).

zu tun, was Sie wollen Sie tun sollten:

<tr data-bind="click : gotoProject"> 

Dann so etwas wie dies nach Ihrer Ansicht Modell:

this.gotoProject = function(){ 
    location.href = '/project/details' + this.Id; 
} 

Natürlich gibt es eine Million Möglichkeiten, ist so etwas wie dies anzuschließen und ohne Wenn ich den Code Ihres View-Modells sehe, kann ich keine näheren Angaben machen.

Auch bezogen auf die attr Bindung, so dass Sie sehen können, wie es funktionieren soll. Wenn Sie noch nicht als Wert des Klickens hatte, sondern auf der obersten Ebene:

<tr data-bind="attr:{'location.href' : '/project/details/' + m.Id}"> 

Diese im folgenden führen würde (na ja, es wird nicht, wie es kein gültiges Attribut Name ist, aber Sie erhalten den Punkt).

<tr location.href="/projecct/details/thisID"> 
+0

danke für die hilfe ist es wirklich geschätzt. – FranckMetis

+0

Kein Problem. Das einzige, worüber ich dich begleite, ist vorsichtig mit dem 'This', es ist chaotisch in JS, wenn du nicht selbstsicher bist und doppelt so im Knockout, weil es bindet. Ich würde vorschlagen, den Ansatz "var self = this" in Ihren Viewmodels für Ihre Gesundheit zu verwenden (hier erwähnt http://knockoutjs.com/documentation/computedObservables.html). – Chao

+0

Das hat perfekt funktioniert – FranckMetis

Verwandte Themen