gpt4 book ai didi

javascript - Backbone : fetch collection from server

转载 作者:可可西里 更新时间:2023-11-01 01:35:57 25 4
gpt4 key购买 nike

我正在尝试从我的服务器获取一个集合。我使用的是 0.3.3 版(不是来自 github 的 master)但是我在这个异常中运行:

Uncaught TypeError: Cannot use 'in' operator to search for 'id' in {id=MyId, active=true}
jQuery.jQuery.extend._Deferred.deferred.resolveWith (jquery.js:869)
done (jquery.js:6591)
jQuery.ajaxTransport.send.callback

这是我创建错误的方式:

var MyModel = Backbone.Model.extend();
var MyCollection = Backbone.Collection.extend({
url: '/api/collection',
model: MyModel
});
var coll = new MyCollection();
coll.fetch();

/api/collection 中的元素在 JSON 中解析。我尝试以各种格式返回它们

["Id1", "Id2", ... ]
[{id: "Id1, somethingElse: "..."}, ...]
{id1: { id1s content}, id2: { ... }, ...}

但是错误总是一样的。这段代码有什么问题?

[编辑] 通过 coll.fetch({error: errorFunc}); 设置错误无济于事,异常保持不变。

[Edit2] 看起来一切正常,直到 collection.fetch() 使用响应对象调用 collection.refresh()。我没有覆盖任何这些功能。

[Edit3] 错误在 collection.add() 方法中,原因是我的元素是一个字符串列表...我的服务器发送了它们错了。

最佳答案

既然您已经确定您的响应格式不是 Backbone 所期望的格式,您应该覆盖 YourModel.parse 函数,该函数应该从您的服务器获取响应并返回集合可接受的模型数组。这是 Backbone.js 的片段

// **parse** converts a response into a list of models to be added to the
// collection. The default implementation is just to pass it through.
parse : function(resp) {
return resp;
},

如您所见,默认函数只是传递数据。您必须使其适用于您的响应格式。

附言id 建议在 Backbone.fetch 方法中放置一个断点,以查看来自服务器的格式以及它究竟在哪里中断了模型创建。

关于javascript - Backbone : fetch collection from server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com