2013-07-16 31 views
10

ノックアウト値バインディングはjqueryオートコンプリートでは機能しません。それを働かせるには?ノックアウトとjQueryオートコンプリート

私はテンプレートを持っている:

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

テンプレートのレンダリング後、私は入力にjQueryのオートコンプリートを適用しています。バインディングは機能しません。私のjsfiddleを参照してください。

それは$(..).autocomplete(..);

+0

は大丈夫あなたのための答えを得ました。面白い質問 –

答えて

17

これは、jQueryのオートコンプリートのように見えますがchangeイベントをハイジャックした後ko.applyBindings(viewModel)が行く場合にのみ機能します。なぜそれは動作しません。

これを修正するには、valueUpdateプロパティをblurに設定する必要があります。もちろん、これはアイテムを選択した後はトリガーされません。最初にぼかしておく必要があります。

$(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

あなたはスーパーマンです!ありがとうございました! – Andrei

+0

ありがとう! *カスタムバインドアプローチよりもずっと簡単です –

関連する問題