下午所有人,我对骨干相对较新,并且因为这个我以前从未见过的错误而被困了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
我也认为我没有任何循环依赖。
任何帮助都会受到大力赞赏,因为我完全被难过了。我试图只包含相关代码,如果其他代码有用,请告诉我。
由于