我将一个Web应用程序更新为Bootstrap 3和Knockout 3,因此丢失了Bootstrap 2中内置的预先输入.我添加了typeahead.js,除非我在Knockout'foreach'绑定中有一个typeahead,否则它会很好用.我包含了以下工作和失败的代码以及typeahead和Bootstrap绑定的Javascript代码.有任何想法吗?
适用于typeahead.js和Knockout绑定的Javascript
RP Niemeyer.. 7
对于像小部件这样的东西,你最好的选择,特别是当你通过模板/控制流渲染元素时,是使用自定义绑定来初始化小部件.例如,您可以使用以下内容:
ko.bindingHandlers.typeahead = { init: function(element, valueAccessor) { var options = ko.unwrap(valueAccessor()) || {}, $el = $(element), triggerChange = function() { $el.change(); } //initialize widget and ensure that change event is triggered when updated $el.typeahead(options) .on("typeahead:selected", triggerChange) .on("typeahead:autocompleted", triggerChange); //if KO removes the element via templating, then destroy the typeahead ko.utils.domNodeDisposal.addDisposeCallback(element, function() { $el.typeahead("destroy"); $el = null; }); } };
以下是一个示例:http://jsfiddle.net/rniemeyer/uuvUR/