-1

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

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() {
  },

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

任何帮助都会很棒。

4

1 回答 1

0

当它不起作用时,可能是因为您的集合尚未获取,因此您应该在获取集合后触发渲染(它会触发您必须收听的重置事件)。

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

对于未定义的属性,我会先尝试记录整个模型,以便您检查它有什么。

console.log(report);
于 2013-10-22T13:27:47.023 回答