2013-08-02 14 views
9

Ich verwende Knockout-Js, um einen Span-Wert festzulegen.Get Datenbindungswert in Jquery

HTML-Code

<span id="spnQStreamChat" data-bind="text: $data.OnLineUserName"></span> 

dies funktioniert gut und auf dem UI-Benutzernamen.

Ich versuche, diesen Wert aus der js-Datei zu bekommen. von

unter Code
alert($(this).attr('data-bind')); 

dieses Ergebnis wie dieser Text dient: $ data.OnLineUserName. Ich möchte den Benutzernamen von mir vergeben.

In UI seine Bhagirathi zeigt aber in js seinen Inhalt im Daten-bind zeigt

wie den Namen zu erhalten (Mittel: Bhagirathi) in js Datei

bitte helfen, dieses Problem zu lösen

dank im Voraus

[EDIT]

$(document).on("click", ".btn-mini", function (e) { 
    alert(ko.contextFor($('.btn-mini')[0]).$data.OnLineUserName); 
    try { 
     var connectionId = chatHub.server.getUserConnectionId($(this).attr('data-bind').username, sessionUserName); 
    } 
    catch (e) { 
     //error 
    } 
}); 

[/ EDIT]

Antwort

12

Sie können die Ko-Kontext für das Element erhalten mit

ko.contextFor($('#spnQStreamChat').get(0)) 

Dies wird ein ein Objekt wie

ko.bindingContext {$parents: Array[1], $root: ViewModel, ko: Object, $data: SomeObject, $parentContext: ko.bindingContext…} 

zurück, wo Daten $ Ihr $ Datenobjekt ist. Um den Namen zu erhalten, brauchen Sie so etwas wie

ko.contextFor($('.button.btn.c_btn').get(0)).$data.OnLineUserName() 

Dieser Weg ist nützlicher, wenn Sie $ Datenobjekt erhalten müssen. Sonst kannst du einfach den 'Text' eines Bereichs mit jQuery

+0

$ ('. Button.btn.c_btn') bekommen. Get (0) was das bedeutet? – user1926138

+0

@ user1926138 $ ('. Button.btn.c_btn'). Get (0) wie $ ('. Button.btn.c_btn') [0] ko.contextFor (Knoten) empfängt nur einen Knoten, aber jQuery Selector gibt ein Array zurück – demkalkov

+0

was bedeutet das? – user1926138