Javascript 主干-简单集合视图-can';不打印项目

Javascript 主干-简单集合视图-can';不打印项目,javascript,backbone.js,backbone-views,Javascript,Backbone.js,Backbone Views,这是一个非常简单的问题。我试图打印出集合中学生模型的每个实例。printData函数中有一行:this.$el.append(model_view.el)我觉得我遗漏了什么。完整的JSFIDLE示例 嗯,您的CollectionView没有指定“el”,因此您不应该尝试向其添加任何内容。您的ModelViews将自己放在页面上,您不需要对它们做任何其他事情 现在,您有一个语法错误:去掉指定行中的.el。事实上,修复该行的最简单方法是对集合中的每个学生调用render(),并停止尝试将它们附加到某

这是一个非常简单的问题。我试图打印出集合中学生模型的每个实例。
printData
函数中有一行:
this.$el.append(model_view.el)我觉得我遗漏了什么。完整的JSFIDLE示例


嗯,您的
CollectionView
没有指定“el”,因此您不应该尝试向其添加任何内容。您的
ModelView
s将自己放在页面上,您不需要对它们做任何其他事情

现在,您有一个语法错误:去掉指定行中的
.el
。事实上,修复该行的最简单方法是对集合中的每个学生调用
render()
,并停止尝试将它们附加到某些内容

我相信您正在尝试显示所有项,而不仅仅是一项,因此每个项都应该将自己附加到其父元素中。。。调用
.append(studentTemplate)
,而不是
.html(studentTemplate)

// Model
var Student = Backbone.Model.extend({
    defaults: {
        name: '',
        age: '',
        major: '',
    }
});

// Collection
ExampleCollection = Backbone.Collection.extend({
    model: Student
});

// Model View
var ModelView = Backbone.View.extend({
    el: $('.example-content'),
    template: _.template( $('#example-target').html() ),

    render: function(){
        var studentTemplate = this.template(this.model.toJSON());
        this.$el.html(studentTemplate);
    }
});

// Collection View
var CollectionView = Backbone.View.extend({
    render: function(){
        this.collection.each(this.printData, this);
        return this;
    },
    printData: function(target){
        var model_view = new ModelView({ model: target });
        this.$el.append(model_view.el);
    }
});

var matt = new Student({name: 'Matt', age: 32, major: 'French'});
var nick = new Student({name: 'Nick', age: 27, major: 'Science'});
var ellen = new Student({name: 'Ellen', age: 63, major: 'Geriatrics'});

var studentList = new ExampleCollection([matt, nick, ellen]);

var collection_view = new CollectionView({ collection: studentList });
collection_view.render();