热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TypeError:$(...).typeahead不是RequireJS的函数

如何解决《TypeError:$().typeahead不是RequireJS的函数》经验,为你挑选了1个好方法。

我正在使用RequireJS来加载我的依赖项.

这是我的配置文件:

requirejs.config({
  baseUrl: "/js/dist",
  paths: {
    jquery: "../bower_components/jquery/dist/jquery.min",
    bootstrap: "../bower_components/bootstrap/dist/js/bootstrap.min",
    typeahead: "../bower_components/bootstrap3-typeahead/bootstrap3-typeahead.min",
    validator: "../bower_components/bootstrapvalidator/dist/js/bootstrapValidator.min",
    openlayers: "../vendor/openlayers/OpenLayers"
  },
  shim: {
    bootstrap: {
      deps: ["jquery"]
    },
    validator: {
      deps: ["bootstrap"]
    },
    openlayers: {
      exports: "OpenLayers"
    }
  }
});

我的主要应用程序文件的一部分:

define(["jquery", "bootstrap", "openlayers", "./popup", "typeahead"], function($, Bootstrap, OpenLayers, Popup) {
   (...)
   $("#textSearch").typeahead("destroy");
   (...)
});

使用Firebug进行检查,我可以看到所有依赖项都已加载.但是调用typeahead()我的搜索文本框会输出以下消息:"TypeError: $(...).typeahead is not a function"

我无法弄清楚这个错误,因为所有依赖项(typeahead都是如此)都被加载了.

你能帮助我吗 ?提前致谢



1> loxyboi..:

你使用的是什么版本的typeahead?

如果是0.11.1:

由于模块定义不正确,当前版本的typeahead(版本0.11.1)与requirejs不兼容,请参见此处:https://github.com/twitter/typeahead.js/issues/1211

来自RequireJS 文档:

用于模块名称的路径不应包含扩展名,因为路径映射可以用于目录.在将模块名称映射到路径时,路径映射代码将自动添加.js扩展名.

在库更新之前的临时解决方法是更改​​库设置AMD兼容性的位置.

应省略文件扩展名,否则requireJS会将路径视为绝对路径.

更改:

define("typeahead.js", [ "jquery" ], function(a0) {

至:

define("typeahead", [ "jquery" ], function(a0) {

希望图书馆很快就会更新,同时希望这会有所帮助.


即使单独加载Bloodhound和Typehead,这对我也不起作用。您知道其他解决方法吗?
推荐阅读
author-avatar
缘来是你明
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有