javascript - 主干返回长度为 0

标签 javascript backbone.js

我对 backbone 还很陌生,我正在尝试构建一个简单的应用程序。这是我目前所拥有的

var Election = Backbone.Model.extend();

var Elections = Backbone.Collection.extend({
   model: Election,
   url: '/assets/data.json',

   initialize: function() {
       console.log('init col');
       this.render();
       return this;
   },

   render: function() {
        console.log('rendering the collection');
        return this;
   },

// return this

});

  var router = Backbone.Router.extend({
   routes: {
       '': 'root'
   },

   root: function(){
       var collection = new Elections();
       collection.fetch();
       console.log(collection.length); //returns 0
   }
});
var r = new router();

Backbone.history.start();

日志是这样的

> init col
> rendering the collection
> 0 

但是当我在控制台中手动创建一个新集合时,它显示了正确的长度和所有内容,我假设由于某种原因路由器调用发生得太早,但不确定。这是 data.json

的示例
[
    {
        "year": 1868,
        ...
    },
    {
        "year": 1872,
        ...
    },

最佳答案

fetch执行异步 HTTP (Ajax) 请求,因此您应该传递 fetch成功回调:

collection.fetch({
   success: function(){
       console.log(collection.length);
   }
});

关于javascript - 主干返回长度为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013272/

相关文章:

javascript - 无法要求发布模块

javascript - Yeoman 不会搭建 Backbone 应用程序

javascript - 如何将参数传递给 View

javascript - 按字母顺序对 Backbone 集合进行排序

backbone.js - Backbone model.save 在服务器发送 200 :OK 时返回错误

javascript - vue js View 未使用动态添加的 v-model 进行更新

javascript - jQuery 动画背景颜色 slideDown

javascript - Backbone.js 设置 View 属性

javascript - Indesign(IDML 文件)自动化使用 HTML5 和 Javascript

javascript - PHP 数组不会存储变量