1

当我的集合视图实例化时,我无法理解为什么模型没有出现。数组被调用,当我调用时,notes.models我得到了正确数量的记录。但是,console.log(note)应该调用的,没有任何反应。因此,获取似乎正在工作,并且有数据,我可以在响应中看到它,它只是没有被传递到collection.each视图中。欢迎任何帮助。这就是一切。

TastpieCollection 和 TasttypieModel 来自http://paltman.com/2012/04/30/integration-backbonejs-tastypie/这似乎工作得很好。

$(function() {

    // Note: The model and collection are extended from TastypieModel and TastypieCollection
    // to handle the parsing and URLs

    window.Note = TastypieModel.extend({});

    window.Notes = TastypieCollection.extend({
        model: Note,
        url: NOTES_API_URL
    });

    // starts by assigning the collection to a variable so that it can load the collection
    window.notes = new Notes();

    window.NoteView = Backbone.View.extend({

        className: "panel panel-default note",
        template: _.template($('#notes-item').html()),

        initialize: function () {
            _.bindAll(this, 'render');
            this.model.bind('change', this.render);
        },
        render: function() {
            this.$el.html(this.template(this.model.toJSON()));
            return this;
        }
    });

    window.NoteListView = Backbone.View.extend({

        id: "notes-block",
        className: "panel panel-info",
        template: _.template($('#notes-item-list').html()),

        initialize: function () {
            _.bindAll(this, 'render');
            this.collection.bind('change', this.render);
        },
        render: function() {
            this.$el.html(this.template());
            this.collection.each(function(note){
                //var view = new NoteView({ model: note });
                console.log(note);
                //$('#notes-list').append(view.render().el);
            });
            console.log('done');
            return this;
        }
    });

    window.NotesRouter = Backbone.Router.extend({
        routes: {
            "": "list",
            'blank': 'blank'
        },
        initialize: function() {
            this.notesView = new NoteListView({
                collection: window.notes
            });
            notes.fetch();
        },
        list: function () {
            $('#app').empty();
            $('#app').append(this.notesView.render().el);
            console.log(notes.length);
        },
        blank: function() {
            $('#app').empty();
            $('#app').text('Another view');
        }
    });

    window.notesRouter = new NotesRouter();
    Backbone.history.start();
})
4

1 回答 1

0

答案是它正在工作。它没有按照我想要的方式工作,但上面的代码确实有效。因此,我将以不同的方式提出这个问题,以触及问题的核心。

于 2013-10-22T20:06:51.217 回答