0

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

require( ['backbone.babysitter'], function(){
  var v = Backbone.ChildViewContainer();
});

我收到以下错误:

Uncaught TypeError: Object #<Object> has no method '_updateLength' backbone.babysitter.js:41

我究竟做错了什么?

4

3 回答 3

0

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

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

因为backbone已经取决于unserscoreand jquery

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

就足够了。

于 2013-05-31T07:54:03.203 回答
0

我认为您没有将其作为参数传递给函数,而且您还需要传递主干:

require( ['backbone'], function(Backbone){
   var v = Backbone.ChildViewContainer();
});

那应该解决它。

于 2013-05-31T15:11:05.600 回答
0

我可以使它与这样的 lib 的 AMD 版本一起工作。在垫片下:

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

并要求这样:

require( ['backbone.babysitter'], function(){
  var v = new Backbone.ChildViewContainer();
});
于 2013-06-03T13:07:44.237 回答