Knockout值绑定不适用于
jquery autocomplte.如何让它工作?
我有一个模板:
<input type="text" class="autocomplete" data-bind="value: viewmodelObservableValue" name="MyValue" />
在模板渲染之后,我在输入上应用了jQuery自动完成.绑定不起作用看我的jsfiddle.
它只适用于ko.applyBindings(viewmodel)在$(..)之后.autocomplete(..);
解决方法
看起来jQuery autocomplete劫持了更改事件.这就是为什么它不起作用
要解决这个问题,你必须将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>