4

バックボーンを使用してInstagramの画像を入力しようとしていますが、

私は基本的に次の3つのモデルを持っています、

ユーザーモデルは、Instagramに関連するすべてのユーザー情報を保存します

App.Models.User = Backbone.Model.extend({
    defaults: {
        id: '',
        access_token: '',
        userid: '',
        username: '',
        full_name: '',
        profile_picture: ''
    },
    urlRoot: "/api/user/",
    initurl: function() {
        return "https://api.instagram.com/v1/users/"+this.get('userid')+"/media/recent/?access_token=" + this.get('access_token');
    },
    initialize: function() {
        this.set('id', $('#domdump .id').val());
        this.fetch({
            success: function(model) {
                var photos = new App.Collections.Ig_photos([],{
                    url: model.initurl()
                });
            }
        });
    }

});

ページネーションのために次のURLを保存するモデル

App.Models.Ig_next_url = Backbone.Model.extend({
    defaults: {
        next_url: ''
    },
    next_url:function(){
        return this.get('next_url');
    }
});

写真のモデル

App.Models.Ig_photo = Backbone.Model.extend({});

複数の写真のコレクション

App.Collections.Ig_photos = Backbone.Collection.extend({
    model: App.Models.Ig_photo,
    initialize: function(model, options) {
        this.url = options.url;
        this.nextSet();
    },
    sync: sync_jsonp,
    parse: function( response ) {
        if(response.pagination && response.pagination.next_url && response.pagination.next_url != this.url){
            var next_url = new App.Models.Ig_next_url({ next_url: response.pagination.next_url });
            this.url = next_url.next_url();
        }
        return response.data;
    },
    nextSet: function(){
        this.fetch({
            success: function(photos){
                var ig_photos_views = new App.Views.Ig_photos_view({ collection: photos});
                console.log(photos);
            }
        });
    }
});

また、コレクションの次のセットを呼び出す[さらに読み込む]ボタンを使用してレンダリングを行うビューがいくつかあります。

私が達成しようとしていたのは、写真がnextset()でコレクションに追加され、コレクションが以前のデータと新しいデータで更新されることですが、現在は上書きされています。

また、modelfetchから新しいコレクションをインスタンス化しても大丈夫ですか?

4

1 に答える 1

8

新しいビューを作成する必要はありません。代わりに、コレクションでトリガーされる「追加」イベントをリッスンし、それに応じて新しいアイテムをレンダリングする必要があります。

nextSet: function(){
    this.fetch({add : true}); // The add option appends to the collection
}

このオプションは、非常に優れたドキュメントで詳しく説明されています。

于 2012-12-06T22:48:50.243 に答える