我正在尝试为骨干创建一个干燥的搜索结果模型和集合,以便无论我在应用程序中搜索什么,我们都使用相同的模型/集合,并且偶尔可能会调用不同的视图。
我的模型和控制器非常简单
Myapp.Models.Search = Backbone.Model.extend(); Myapp.Collections.Search = Backbone.Collection.extend({ 模型:Myapp.Models.Search });
然后我填充 url 值以在视图中获取正确的请求和参数
Myapp.Views.SearchResults = Backbone.View.extend({ el: 'div#results', 初始化:函数(){ Myapp.results = new Backbone.Collection.Search; Myapp.results.url = this.model.search_type+'/'+this.model.data; //这包含搜索查询 Myapp.results.fetch({ 成功:函数(){警报('得到结果')}, 错误:function(){alert('这不好!');} }); }
没有“fetch”,一切都很好,但是当我包含 fetch 时,会进行 fetch,返回结果,但我得到了错误
未捕获的类型错误:未定义不是主干.js 中的函数:23
我检查了响应,它是有效的 JSON。当我将 Myapp.results 输出到控制台时,我看到了集合,但它仍然是空的。错误和成功都不会被触发。
----------------update------------------------------------ 根据评论,我已经划分了上到第23行,发现这一行正在返回错误
a=new this.model(a,b),
如果我理解这条线的作用,这个问题可能是因为响应集合只返回了一个模型吗?我希望这不会导致问题,您应该能够拥有一个包含 1 个或更少模型的集合。
- - - - - - - 更新 - - - - - - - - - - - - -
所以我删除了对model
集合中的引用,现在我没有得到错误。所以在某些方面,这已经解决了,但不应该这样。到目前为止我一直定义与集合关联的模型是否有原因?