twitter-bootstrap-3 – Typeahead.js在Knockout 3 foreach绑定
发布时间:2020-12-17 20:38:37 所属栏目:安全 来源:网络整理
导读:我将一个Web应用程序更新为Bootstrap 3和Knockout 3,因此丢失了Bootstrap 2中内置的预先输入.我添加了typeahead.js,除非我在Knockout’foreach’绑定中有一个typeahead,否则它会很好用.我包含了以下工作和失败的代码以及typeahead和Bootstrap绑定的 Javascri
我将一个Web应用程序更新为Bootstrap 3和Knockout 3,因此丢失了Bootstrap 2中内置的预先输入.我添加了typeahead.js,除非我在Knockout’foreach’绑定中有一个typeahead,否则它会很好用.我包含了以下工作和失败的代码以及typeahead和Bootstrap绑定的
Javascript代码.有任何想法吗?
<form role="form"> <div class="row"> <div class="col-sm-4 form-group"> <input type="text" class="form-control sectionNames" data-bind="value: name" /> </div> </div> <div data-bind="foreach: section"> <div class="row"> <div class="col-sm-4 form-group"> <input type="text" class="form-control sectionNames" data-bind="value: name" /> </div> </div> </div> </form> 适用于typeahead.js和Knockout绑定的Javascript <script> $( document ).ready(function() { $('input.sections').typeahead({ name: 'sectionName',local: [ 'ABC','DEF' ] }); ko.applyBindings({ section : [ { name: "",other: "1234" },{ name: "",other: "5678" } ] }); }); </script> 解决方法
对于像小部件这样的东西,你最好的选择,特别是当你通过模板/控制流渲染元素时,是使用自定义绑定来初始化小部件.例如,您可以使用以下内容:
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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |