我使用的 Rails 服务器在转到“/todos”路线时返回此 JSON 对象。
[{"id":1,"description":"yo this is my todo","done":false,"user_id":null,"created_at":"2015-03-19T00:26:01.808Z","updated_at":"2015-03-19T00:26:01.808Z"},{"id":2,"description":"Shaurya is awesome","done":false,"user_id":null,"created_at":"2015-03-19T00:40:48.458Z","updated_at":"2015-03-19T00:40:48.458Z"},{"id":3,"description":"your car needs to be cleaned","done":false,"user_id":null,"created_at":"2015-03-19T00:41:08.527Z","updated_at":"2015-03-19T00:41:08.527Z"}]
我正在将此代码用于我的收藏。
var app = app || {};
var TodoList = Backbone.Collection.extend({
model: app.Todo,
url: '/todos'
});
app.Todos = new TodoList();
但是,当尝试获取数据时,它指出该对象未定义。我最初认为我的函数没有正确解析 JSON。然而,情况似乎并非如此。我创建了一个带有调试器的解析函数来查看响应。返回一个包含三个对象的数组。
当我尝试测试 fetch() 时会发生什么。
var todos = app.Todos.fetch()
todos.length // returns undefined
todos.get(1) // TypeError: undefined is not a function
todos 集合不会自动填充控制台中的函数 get()。我已经不知道可能出现什么问题了。请帮忙。谢谢!
最佳答案
Fetch是异步的,需要监听add事件:
var todos = app.Todos.fetch()
todos.on('add', function(model){
console.log(todos.length);
});
如果你通过参数重置,你可以监听新的模型:
var todos = app.Todos.fetch({reset: true})
todos.on('reset', function(model){
console.log(todos.length);
});
您还可以阅读here .
关于javascript - Backbone : I am trying to fetch a collection (using a rails server). 但是,我的提取看起来无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29353936/