如何加载backbone.babysitter?

时间:2013-05-31 07:34:37

标签: backbone.js requirejs

在我的项目中,我想使用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

我做错了什么?

3 个答案:

答案 0 :(得分:0)

如果backbone.babysitter依赖于主干和下划线,则应在依赖项之间说明:

'backbone.babysitter': {
  deps: ['backbone', 'underscore']
}

因为backbone已经取决于unserscorejquery

'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();
});