在我的项目中,我想使用backbone.babysitter,但我无法使其正常工作。
我使用require.js
加载模块,现在我的配置看起来像这样。
requirejs.config({
paths: {
'underscore': 'lib/underscore',
'backbone': 'lib/backbone',
'backbone.babysitter': 'lib/backbone.babysitter',
'jquery': 'lib/jquery',
},
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore','jquery'],
exports: 'Backbone'
}
}
});
我使用AMD版backbone.babysitter
当我稍后在我的代码中执行时
require( ['backbone.babysitter'], function(){
var v = Backbone.ChildViewContainer();
});
我收到以下错误:
Uncaught TypeError: Object #<Object> has no method '_updateLength' backbone.babysitter.js:41
我做错了什么?
答案 0 :(得分:0)
如果backbone.babysitter
依赖于主干和下划线,则应在依赖项之间说明:
'backbone.babysitter': {
deps: ['backbone', 'underscore']
}
因为backbone
已经取决于unserscore
和jquery
:
'backbone.babysitter': {
deps: ['backbone']
}
就足够了。
答案 1 :(得分:0)
我认为你没有将它作为参数传递给函数,但你也需要传递骨干:
require( ['backbone'], function(Backbone){
var v = Backbone.ChildViewContainer();
});
那应该解决它。
答案 2 :(得分:0)
我可以使用它而不是像这样的AMD版本的lib。 在垫片下:
'backbone.babysitter': {
deps: ['backbone','underscore']
},
并要求这样:
require( ['backbone.babysitter'], function(){
var v = new Backbone.ChildViewContainer();
});