骨干错误:模型不是构造函数

时间:2017-05-07 15:22:00

标签: backbone.js collections model require

下午所有人,我对骨干相对较新,并且因为这个我以前从未见过的错误而被困了3天。

我有一个'TestCollection'集合,它将模型定义为一个函数。加载集合时,第一次尝试使用类'TestModel'创建模型时出现错误。

我得到的错误是:

Uncaught TypeError: TestModel is not a constructor
at new model (testCollection.js:14)
at child._prepareModel (backbone.js:913)
at child.set (backbone.js:700)
at child.add (backbone.js:632)
at child.reset (backbone.js:764)
at Object.options.success (backbone.js:860)
at fire (jquery.js:3143)
at Object.fireWith [as resolveWith] (jquery.js:3255)
at done (jquery.js:9309)
at XMLHttpRequest.callback (jquery.js:9713)

我相信我已经为集合和模型提供了他们需要工作的所有代码。感觉加载时出现了问题,但是当我在模型文件的顶部放置一个console.log时,我发现在收集尝试使用它之前它肯定是被加载的。

任何帮助都会受到大力赞赏。

为TestCollection:

define([
  'backbone',
  'models/testModel'
], function(Backbone, TestModel) {

  var TestCollection = Backbone.Collection.extend({

    model: function(attrs) {
      switch (attrs._type) {
        case 'test':
          console.log('making a test model')
          return new TestModel();
      }
    },

    initialize : function(models, options){
      this.url = options.url;
      this._type = options._type;
      this.fetch({reset:true});
    }

  });

  return TestCollection;

}); 

TestModel:

require([
  './testParentModel'
], function(TestParentModel) {

  var TestModel = TestParentModel.extend({

    urlRoot: 'root/url',

    initialize: function() {
      console.log('making test model')
    }
  });

  return TestModel;
});

进行TestCollection的文件:

define(function(require) {

  var MyProjectCollection = require('collections/myProjectCollection');
  var TestCollection = require('collections/testCollection');

  Origin.on('router:dashboard', function(location, subLocation, action) {



  Origin.on('dashboard:loaded', function (options) {
    switch (options.type) {
      case 'all':
        var myProjectCollection = new MyProjectCollection;

        myProjectCollection.fetch({
          success: function() {
            myProjectCollection.each(function(project) {

              this.project[project.id] = {};

              this.project[project.id].testObjects = new TestCollection([], {
                url: 'url/' + project.id,
                _type: 'test'
              });
            });
          }
        });
    }
  });

});

我已经看过堆栈溢出,它似乎不是下面的问题(这似乎是最常见的问题)。 Model is not a constructor-Backbone

我也认为我没有任何循环依赖。

任何帮助都会受到大力赞赏,因为我完全被难过了。我试图只包含相关代码,如果其他代码有用,请告诉我。

由于

0 个答案:

没有答案