2013-08-02 12 views
9

Sto usando knockout js per impostare un valore di span.Ottieni il valore di data-binding in jquery

codice HTML

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

questo sta lavorando bene e mostrando il nome utente sull'interfaccia utente.

Sto cercando di ottenere quel valore dal file js. utilizzando il codice qui sotto

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

questo sta servendo risultato come questo testo: $ data.OnLineUserName. Voglio il nome utente assegnato da me.

In UI suo mostrando Bhagirathi ma in js suo mostrando il contenuto presente nel data-bind

come ottenere il nome (significa: Bhagirathi) in un file js

si prega di aiutare a risolvere questo problema

grazie in anticipo

[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]

risposta

12

è possibile ottenere il contesto knockout per elemento con

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

questo restituirà un un oggetto come

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

dove $ dati è l'oggetto $ data. Quindi, per ottenere il nome che si bisogno di qualcosa come

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

In questo modo è più utile quando è necessario per ottenere $ oggetto di dati. Altrimenti puoi ottenere il 'testo' di una spanna con jQuery

+0

$ ('. Button.btn.c_btn'). Ottieni (0) cosa significa? – user1926138

+0

@ user1926138 $ ('. Button.btn.c_btn'). Get (0) uguale a $ ('. Button.btn.c_btn') [0] ko.contextFor (nodo) riceve solo un nodo ma selettore jQuery restituisce un array – demkalkov

+0

cosa significa? – user1926138

Problemi correlati