2013-08-02 3 views
9

Я использую knockout js для установки значения span.Получить значение привязки данных в jQuery

HTML код

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

это работает отлично и показывать имя пользователя на пользовательском интерфейсе.

Я пытаюсь получить это значение из файла js. с помощью кода ниже

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

это служит результат, как этот текст: $ data.OnLineUserName. Я хочу, чтобы имя пользователя было назначено мной.

В интерфейсе его показ Бхагирати но в JS его показ текущего содержимого в данной привязке

как получить имя (означает: Бхагиратхи) в JS файла

пожалуйста, помогите решить эту проблему

заранее спасибо

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

ответ

12

Вы можете получить контекст нокаута для элемента с

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

этого будет возвращать объект как

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

где $ данные ваш объект $ данных. Итак, чтобы получить имя, вам нужно что-то вроде

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

Этот способ более полезен, когда вам нужно получить объект данных $. В противном случае вы можете просто получить «текст» диапазона с помощью jQuery

+0

$ ('. Button.btn.c_btn'). Get (0) что это значит? – user1926138

+0

@ user1926138 $ ('. Button.btn.c_btn'). Get (0) тот же, что и $ ('. Button.btn.c_btn') [0] ko.contextFor (node) получает только один узел, но селектор jQuery возвращает массив – demkalkov

+0

Что это значит? – user1926138

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