javascript - Backbone : I am trying to fetch a collection (using a rails server). 但是,我的提取看起来无法正常工作

标签 javascript backbone.js fetch

我使用的 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

tod​​os 集合不会自动填充控制台中的函数 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/

相关文章:

javascript - 如何在 JavaScript 中访问父类(super class)的私有(private)成员?

backbone.js - 如何替换Backbone.Collection中的模型?

javascript - 是否可以使用对象 ID 而不是对象来初始化 Backbone 集合?

jquery - backbone.js 请求,其中请求模型与响应模型是不同的实体

javascript - Fetch API 和 JSON 出现问题

javascript - React Native - fetch 似乎没有触发

单击按钮不会触发 JavaScript 函数

javascript - 范围对象

javascript - 如何正确使用 async/await 函数?

javascript - 我的提取请求不断收到错误 "the string did not match the expected pattern"