作者:缘来是你明 | 来源:互联网 | 2023-05-26 15:36
我正在使用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,这对我也不起作用。您知道其他解决方法吗?