2013-04-16 3 views
0

У меня есть два выпадающих списка после изменения, которые будут обновлять ярлык. метка привязана к наблюдаемому полю в моем представленииModel с использованием текстовой привязки. Однако, когда текст ярлыка изменен, viewModel, отправленный на сервер, не обновляется. Я не мог найти соответствующую информацию с сайта нокаута. Я что-то упускаю?KnockOut.js привязка текста к клиенту не обновляется viewmodel

HTML

 <select class="string-match-dropdown"> 
      <option value="*">contains</option> 
      <option value="^">starts with</option> 
      <option value="$">ends with</option> 
      <option value="=">is exactly</option> 
      <option value="@@">has value</option> 
     </select> 
     <select class="date-money-match-dropdown"> 
      <option value="eq">=</option> 
      <option value="noteq"><></option> 
      <option value="gt">></option> 
      <option value="gteq">>=</option> 
      <option value="lt"><</option> 
      <option value="lteq">&lt;=</option> 
     </select> 
     <label class="match-label" data-bind='html: qualifier'></label> 

JS

$('.date-money-match-dropdown').live('change', function() { 
    $(this).parent().find('.match-label').html($(this).find('option:selected').text()); 
}); 

$('.string-match-dropdown').live('change', function() { 
    $(this).parent().find('.match-label').html($(this).find('option:selected').text()); 
}); 
+1

Да, вы не хватает кода из вопроса! Как стартер, как вы обновляете ярлык с помощью jquery? Кстати, я не думаю, что привязка «text» - это два пути ... Поэтому, пожалуйста, разместите соответствующую часть своего кода (повторение в JSFiddle будет еще лучше), иначе мы просто угадываем здесь. – nemesv

+0

отправил html databinding и код jquery для обновления метки – Laguna

+3

Зачем вам нужен jquery для обработки выпадающего меню? Почему бы вам не использовать чистое нокаутное решение http://jsfiddle.net/qXvLp/? – nemesv

ответ

1

Для этого сценария вам не нужно использовать JQuery вообще.

Поскольку у вас уже есть наблюдаемая на вашем ViewModel qualifier вам просто нужно использовать value binding на ваших select с и Knockout сделает обработку для вас изменения:

<select class="string-match-dropdown" data-bind='value: qualifier'> 
    <option value="*">contains</option> 
    <option value="^">starts with</option> 
    <option value="$">ends with</option> 
    <option value="=">is exactly</option> 
    <option value="@@">has value</option> 
</select> 
<select class="date-money-match-dropdown" data-bind='value: qualifier'> 
    <option value="eq">=</option> 
    <option value="noteq"><></option> 
    <option value="gt">></option> 
    <option value="gteq">>=</option> 
    <option value="lt"><</option> 
    <option value="lteq">&lt;=</option> 
</select> 
<label class="match-label" data-bind='html: qualifier'></label> 

Demo JSFiddle.

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