0

我正在尝试为骨干创建一个干燥的搜索结果模型和集合,以便无论我在应用程序中搜索什么,我们都使用相同的模型/集合,并且偶尔可能会调用不同的视图。

我的模型和控制器非常简单

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集合中的引用,现在我没有得到错误。所以在某些方面,这已经解决了,但不应该这样。到目前为止我一直定义与集合关联的模型是否有原因?

4

0 回答 0