2013-07-16 14 views
10

Łączenie wartości knockout nie działa z autocomplte jquery. Jak to działa?Autokomplet do knockout i jQuery

Mam szablon:

<input 
    type="text" 
    class="autocomplete" 
    data-bind="value: viewModelObservableValue" 
    name="MyValue" /> 

Po szablonu renderowania mam stosowania jQuery autouzupełniania na wejściu. Wiązanie nie działa. Zobacz mój jsfiddle.

To działa tylko wtedy, gdy ko.applyBindings(viewModel) idzie po $(..).autocomplete(..);

+0

porządku dostał odpowiedź dla Ciebie. Interesujące pytanie –

Odpowiedz

17

Wygląda jQuery autouzupełniania porwany zdarzenie change. To dlatego nie działa.

Aby to naprawić, musisz ustawić właściwość valueUpdate na blur. Oczywiście, nie spowoduje to wyzwolenia po wybraniu przedmiotu, najpierw trzeba go zamazać.

$(function() { 
 
    var availableTags = [ 
 
     "ActionScript", 
 
     "AppleScript", 
 
     "Asp", 
 
     "BASIC", 
 
     "C", 
 
     "C++", 
 
     "Clojure", 
 
     "COBOL", 
 
     "ColdFusion", 
 
     "Scheme" 
 
    ]; 
 
    $(".autocomplete").autocomplete({ 
 
     source: availableTags 
 
    }); 
 
}); 
 

 
var viewModel = { 
 
    myValue: ko.observable() 
 
}; 
 

 
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script> 
 

 
<input type="text" class="autocomplete" data-bind="value: myValue, valueUpdate:'blur' " /> 
 

 
<div data-bind="text: myValue"></div>

+6

Jesteś supermanem! Dziękuję Ci! – Andrei

+0

Dzięki! * Tak * znacznie łatwiejsze niż niestandardowe podejście wiążące .... –