无法使用Backbone.js迭代集合

时间:2013-10-22 13:12:18

标签: javascript backbone.js backbone-views

我是骨干的新手,我正在尝试解决某些代码中的错误。问题是我有一个我似乎无法迭代的集合。如果我在每个循环之前放置一个断点,我可以看到该集合存在但循环仍然不会迭代它。这是我的代码。同样,我是骨干的新手,所以如果您需要任何合格的信息,请告诉我:

var ReportsListView = ActivityDBView.extend({   

    render: function() {      
        this.collection.each(function(report) {
            console.log(report.get('canEdit'));
            console.log(report.get('programSpecific'));
        }, this);


    },
    drawReportList: function(reports, title, includeEditLinks) {

});

但是,如果我在渲染之前添加它:

  initialize: function() {
  },

它有时会起作用。当它工作时,我可以迭代列表,但所有获取返回undefined。我不知道为什么我不能遍历列表或为什么代码行为不一致。这可能是由于异步性质还是存在某种竞争?

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

如果它不起作用,可能是因为你的集合尚未被提取,所以你应该在获取集合后触发渲染(它会触发你必须要监听的重置事件)。

initialize : function() {
    this.listenTo(this.collection, 'reset', this.render, this);
},

对于undefined属性,我会先尝试记录整个模型,以便检查它的内容。

console.log(report);