我正在尝试将SlickGrid导入我的应用程序...但它会连接到窗口,即使我使用 AMD 加载模块
有没有办法使用填充码配置来避免污染命名空间。另一个问题可能是SlickGrid依赖项将在全局命名空间中查找它。
想法会很棒。
shim:
'grid/slick.core':
deps: ["jquery"]
'grid/slick.grid':
deps: ["jquery"]
'grid/jquery.event.drag-2.0.min':
deps: ["jquery"]
'grid/jquery.event.drop-2.0.min':
deps: ["jquery"]
define [
"grid/jquery.event.drag-2.0.min"
"grid/jquery.event.drop-2.0.min"
"grid/slick.core"
"grid/slick.grid"
], () ->
有我当前的填充码配置以及我正在使用网格的模块
原则上,您可以使用填充码配置中的init()
回调从全局范围中删除任何对象:
'grid/slick.core': {
deps: ['jquery'],
exports: 'Slick',
init: function (bar) {
//"this" is the global scope
var slick = this.Slick;
delete this.Slick;
return slick;
}
}
但正如您在问题中所述,库本身依赖于全局对象上 Slick 属性的存在,对此您无能为力。
您可以:
- 联系插件作者并要求他添加AMD支持(或者更好的是,在github上提交拉取请求)
- 将插件代码包装在
define
调用中,然后删除填充程序配置。