3

Backbone.js を使用して、API リクエストからアイテム (ステーション) のリストを表示しています。

私の質問は多く寄せられているようです。他の質問の解決策を可能な限り調べましたが、まだ問題があります。

以下のコードは次のとおりです。

(function($) {

    _.templateSettings = {
    interpolate: /\{\{(.+?)\}\}/g
    };
//  models
    var Station = Backbone.Model.extend({
        urlRoot: '../api/admin/stations/',
        idAttribute: "_id",
        defaults: {
            _id: null,
            country: 'ZA'
        }
    });

//  collections
    var StationList = Backbone.Collection.extend({
        model: Station,
        url: '../api/admin/stations/'
});

//  views
/*
 * Station View
 */
    var StationView = Backbone.View.extend({
        tagName: 'article',
        className:  'station-container',
        template: $("#stationListTemplate").html(),

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

/*
 * Master View (Station List)
 */
    var StationListView = Backbone.View.extend({
        el: $("#stationListView"),

        initialize: function() {
            this.collection = new StationList();
            this.collection.fetch({
                success: this.render()
            });
        },
        render: function() {
            var that = this;
            console.log(this.collection.models); // RETURNS EMPTY ARRAY
            _.each(this.collection.models, function (item) {
// NOTHING HAPPENS AS THE ARRAY IS EMPTY
                that.renderStation(item);
            }, this);
        },
        renderStation: function (item) {
            var stationView = new StationView({
                model: item
            });
            console.log(stationView);
            this.$el.append(stationView.render().el);
        }
    });

//  load views
    var _stationList = new StationListView;
} (jQuery));

エラーが発生した場所について、CAPS で上記のコメントを追加しました。私console.log(that)またはconsole.log(this.collection)私がコレクションを見ることはできますが、その直後にそのモデルにアクセスすることはできません.

モデルにアクセスできなくなっている原因が何なのかわかりません。どんな助けでも大歓迎です

4

1 に答える 1

0

私はあなたのコードを引用します:

success: this.render()

私はあなたがどちらかを書くべきだと確信しています

success:this.render

また

success:function(){
 this.render()
}

成功コールバックを定義する (そしてコードに従って実行する) までには、コレクションはまだフェッチされていないためです。他にもエラーがあるかもしれませんが、これは明らかです

于 2012-12-09T21:49:07.660 に答える