Typeahead.js无法在Knockout 3 foreach绑定中工作

 手机用户2502917141 发布于 2023-02-11 20:17

我将一个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/

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有