导致TypeError的Backbone collection.fetch():this.model未定义

时间:2014-07-14 01:49:59

标签: backbone.js

一切看起来都是正确的,但每当我执行以下操作时,我会得到TypeError:f在主干1.1.2中未定义,而且,当我调试时,我看到它能够收到正确的响应,但是当我做类别时.toJSON()我什么都没得到:

var categories = new App.Lookup.CategoryCollection();
categories.url = 'index.php?r=lookupapi/categories';
categories.fetch();

App.Lookup.CategoryCollection = Backbone.Collection.extend({
    model: App.Lookup.CategoryModel                
});

App.Lookup.CategoryModel = Backbone.Model.extend({

});

我在这里做错了什么?

更新

我使用user972建议的开发版本,并收到以下错误消息:

TypeError:this.model未定义

categories.fetch()是导致错误的那个,它指向骨干中的这个函数:

 // Define how to uniquely identify models in the collection.
    modelId: function (attrs) {
      return attrs[this.model.prototype.idAttribute || 'id'];
    },

但我仍然无法弄清楚为什么它是未定义的。

2 个答案:

答案 0 :(得分:1)

App.Lookup.CategoryModel上方App.Lookup.CategoryCollection的声明并未悬挂。在使用之前,您需要定义App.Lookup.CategoryModel

所以将代码更改为:

App.Lookup.CategoryModel = Backbone.Model.extend();

App.Lookup.CategoryCollection = Backbone.Collection.extend({
  model: App.Lookup.CategoryModel                
});

var categories = new App.Lookup.CategoryCollection();
categories.url = 'index.php?r=lookupapi/categories';
categories.fetch();

回应:

I saw that it was able to receive the correct response, yet when I do      
categories.toJSON() I get nothing

如果您想查看fetch的结果,则需要传递success回调:

categories.fetch({
   success: function(collection, response, options) {
      console.log(collection.toJSON());
   }
});

答案 1 :(得分:0)

出于好奇,您是否按正确的顺序引用了脚本文件?它似乎更多来自脚本加载错误,而不是基于代码。

<script src="underscore-1.6.0-min.js"></script>
<script src="backbone-1.1.2-min.js"></script>

其他可能有帮助的事情是使用非最小版本的主干并尝试定位它崩溃的地方以及原因?

 <script src="http://backbonejs.org/backbone.js"></script>