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 に答える