View不显示模板中的骨干模型

时间:2013-03-12 23:22:32

标签: backbone.js model laravel

我从Backbone和Laravel开始,我有几个问题,因为我没有找到任何西班牙语(也许我不知道如何搜索,因此更容易提问)。

以下是我的模特:

window.mMateria = Backbone.Model.extend({
    defaults: {
        nombremateria: ""
    },
});

window.cMaterias = Backbone.Collection.extend({
    url: "materias",
    model: mMateria,
    initialize: function() {
        this.fetch();
    }
});

以下是我的观点:

window.vMaterias = Backbone.View.extend({
    tagName: 'ul',
    model: cMaterias,
    className:'list-materias',

    initialize: function () {
        _.bindAll(this, "render");
    },
    render: function(){
        $(this.el).append("Renderizando!"); //It appears
        _.each(this.model.models, function (aMater) {
            console.log(aMater); //HERE IT DOESN'T ENTER, doesn't show anything
            $(this.el).append(new vMateria({model:aMater}).render().el);
        }, this);
        return this;
    },
    el: $(".container-fluid")
});

window.vMateria = Backbone.View.extend({
    initialize:function () {
        _.bindAll(this, "render");
        this.model.bind("change", this.render(), this);
    },
    render: function() {
        this.$el.html(this.template(this.model.toJSON()));
        return this;
    }, 
    className: "item-materia",
    el: $(".container-fluid"),

    template: _.template($('#pl_materia').val()),
});

然后初始化:

    cmaterias = new cMaterias(); 
    console.log(cmaterias); //it returns 41 signatures
    vmaterias = new vMaterias({model: cmaterias});
    console.log(vmaterias); //Shows child {cid: "view1", model: child, ... 
    vmaterias.render().el;

请帮助我,原谅我的英语,我不知道Laravel是否与 return Response::eloquent(Materia::all());是问题所在。尽可能具体。 Dios los bendiga。

1 个答案:

答案 0 :(得分:0)

尝试这些更改。

window.vMaterias = Backbone.View.extend({
    tagName: 'ul',
    className:'list-materias',
    render: function(){
        this.$el.empty();
        this.$el.append("Renderizando!"); //It appears
        this.collection.each(function (aMater) {
            console.log(aMater); //HERE IT DOESN'T ENTER, doesn't show anything
            this.$el.append(new vMateria({model:aMater}).render().el);
        }, this);
        return this;
    },
    el: $(".container-fluid")
});

cmaterias = new cMaterias(); 
console.log(cmaterias); //it returns 41 signatures
vmaterias = new vMaterias({collection: cmaterias});