我正在用backbone.js + require.js构建一个应用程序。我想在我的应用程序中使用datepicker:datepicker
因为它不是AMD,所以我将它放入如下的requirejs:
require.config({
baseUrl: "appjs",
paths:{
jquery: '../layout_assets/assets/js/libs/jquery-1.8.2.min',
dt: '../layout_assets/plugins/datatables/jquery.dataTables.min',
dtPlugins:'../layout_assets/plugins/datatables/dtplugins',
dtBootstrap: '../layout_assets/plugins/datatables/dataTables.bootstrap',
underscore: '../assets/js/underscore-min',
Backbone: '../assets/js/backbone-min',
bootstrap: '../assets/js/bootstrap.min',
datepicker:'../layout_assets/bootstrap-datepicker'
},
shim: {
underscore:{
exports:"_"
},
Backbone:{
deps: ['underscore','jquery'],
exports: "Backbone"
},
dt: {
deps:['jquery'],
exports: "dt"
},
dtPlugins: {
deps:['jquery','dt'],
exports:"dtPlugins"
},
bootstrap: {
deps:['jquery'],
exports:"bootstrap"
},
dtBootstrap: {
deps: ['dt','jquery'],
exports: "dtBootstrap"
},
datepicker:{
deps:['jquery','bootstrap'],
exports:"datepicker"
}
}
});现在,在我的一个视图中,我这样调用datepicker:
define(['Backbone',
'underscore',
'jquery',
'datepicker',
'models/reports',
'dtBootstrap',
'bootstrap',
'text!templates/reports/dashboard.html',
],function(Backbone,_,$,dp,report,dtBootstrap,bootstrap,dashboard){
var view=Backbone.View.extend({
el:"#content-wrap",
template:_.template(dashboard),
render:function(){
this.$("#container-left").html(this.template());
console.log(dp);
}
});
return view;
});这将在控制台上返回undefined。我猜这个库没有得到适当的垫片。
发布于 2014-05-16 01:37:21
这是我使用的填充程序:
"datepicker" : {
deps: ["jquery-ui", "bootstrap"],
exports: "$.fn.datepicker"
}为
"datepicker": "lib/datepicker/js/bootstrap-datepicker"发布于 2013-02-26 18:24:32
查看datepicker的源代码,它看起来实际上并没有导出任何东西--这就是为什么requirejs找不到要“连接”到的全局dt变量(如果在浏览器环境中运行,则为window.dt)。根据datepicker的网站,它只是将其函数添加到jQuery对象中,而不应该将其用作独立的实例。示例来自其docs page
$('#dp5').datepicker()
.on('changeDate', function(ev){
if (ev.date.valueOf() < startDate.valueOf()){
....
}});
你有没有试过这样的东西?
我相信在这种情况下垫片是不必要的。
https://stackoverflow.com/questions/15085504
复制相似问题