错误:TypeError:$(…). selectpicker不是第一次打开Web应用程序时发生的函数错误。
在我的app.js
requirejs.config({ baseUrl: '', paths: { "jquery": "js/jquery", "jquery-ui": "js/jquery-ui", text: "lib/text", //"css": "css", handlebars: 'js/handlebars', moment: "js/moment.min", bootstrap: 'js/bootstrap.min', somtjquery: 'widgets/somt/js/somtjquery', bootstrapselect: 'js/bootstrap-select', utils: 'widgets/somt/js/utils', filterwidget: 'widgets/somt/js/filterwidget' }, shim: { handlebars: { exports: 'Handlebars' }, 'bootstrap': { deps: ['jquery'] }, //'bootstrapdatepicker':{deps: ['jquery','bootstrap']}, 'somtjquery': { deps: ['jquery', 'utils', 'bootstrap'] }, 'bootstrapselect': { deps: ['jquery', 'bootstrap'] }, 'jquery': { exports: '$' }, "datepicker": { deps: ["jquery-ui", "bootstrap"], exports: "$.fn.datepicker" }, 'tooltip': { deps: ['jquery'], exports: '$.fn.tooltip' }, 'filterwidget': { deps: ['jquery', "jquery-ui", "bootstrap", "bootstrapselect"], exports: 'filterwidget' } } }); In filterwidget.js define(["handlebars",'hbs!widgets/somt/templates/pfilter'],function(Handlebars,filter){ var selector = "#somt-filter-area"; $(selector).html(filter); $(function selectDatePicker() { try { $(selector).find('.selectpicker').selectpicker(); } catch (e) { console.log("Date select err message : " + e); } try { $(selector).find("#week").datepicker({ showOn: "button", buttonImage: "images/common-calendar-month-glyph.svg", buttonImageOnly: true, firstDay: 1, beforeShowDay: function(date) { return [date.getDay() === weekofday, ""]; }, dayNamesMin: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], maxDate: currentcutoffday, dateFormat: 'mm/dd/yy' }); } catch (e) { console.log("Date picker err message : " + e); } }); });
特别是我在Firefox 36及更低版本中遇到了错误
您误解了如何使用shim
。配置没有filterwidget
的正确依赖项。必须仅对非amd库使用“shim”。如果文件具有定义
函数,则它的amd模块和shim
对于该模块不是必需的。从shim
中删除此代码:
'filterwidget': {
deps: ['jquery', "jquery-ui", "bootstrap", "bootstrapselect"],
exports: 'filterwidget'
}
并在 filterwidget 中设置过滤器小部件的所有依赖项.js:
define(['jquery',“jquery-ui”,“bootstrapselect”,“handlerbs”,“bbs!widgets/somt/templates/pfilter']
PS:同时从填充程序中删除 jquery、jquery-ui。这是AMD库。你怎么知道?看看图书馆的开头就知道了。例如'jquery-ui'。如果有这样的内容:
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define([ "jquery" ], factory );
} else {
// Browser globals
factory( jQuery );
}
则不需要垫片。