0

parse.com によってフェッチされたコレクションをレンダリングするビューを作成しましたが、それを渡すビューを呼び出すと、コレクションが機能しません。

ビューにフェッチして送信する関数:

friends: function () {

    var self = this;
    var User = Parse.Object.extend("User");
    var Amici = Parse.Object.extend("User");

    var query = new Parse.Query(User);
    query.equalTo("objectId", Parse.User.current().id);
    query.find({
        success: function (user) {
            for (var i = 0; i < user.length; i++) {

                user[i].relation("amici").query().find({

                    success: function (amici) {

                        console.log(amici);
                        var friendscollection = new Amicizie(amici);
                        console.log(friendscollection);
                        var page = new Homelistuser({
                            model: friendscollection
                        });
                        self.changePage(page);

                    }
                });
            }
        }
    });
},

フレンド コレクションのコンソール ログは次のとおりです。

child {length: 3, models: Array[3], _byId: Object, _byCid: Object, url: "https://api.parse.com/1/classes/User"…}

ビューに渡すのは正しいコレクションのようですが、正しくレンダリングされません。このコレクションが正しくレンダリングされる広告の例:

child {length: 5, models: Array[5], _byId: Object, _byCid: Object, model: function…}

最後のコレクションが機能するのに、最初のコレクションが機能しないのはなぜですか?

models:Array[] 機能するコレクションの配列は次のとおりです。

Models: Array[5] 
0: child
1: child
2: child 
3: child

動作しないコレクションの models:Array[] は次のとおりです。

models: Array[3] 
0: Backbone.Model 
1: Backbone.Model 
2: Backbone.Model

景色:

var Homelistuser = Backbone.View.extend({

    tagName: "ul",
    id: "list",

    template: Handlebars.compile(template),

    initialize: function () {
        this.model.bind("reset", this.render, this);
        $(window).on('orientationchange', this.onOrientationChange);
        $(".out").on('click', this.log_out);
        $(".prove").on('click', this.prove);
    },
    events: {
        "click .out": "log_out"

    },
    render: function (eventName) {
        $(this.el).empty();
        _.each(this.model.models, function (ad) {


            $(this.el).append(new SingleUserView({
                model: ad
            }).render().el);
        }, this);
        return this;
    },

最初のビューによって呼び出されるビュー:

var SingleUserView = Backbone.View.extend({

    tagName: "li",

    events: {
        "click": "goToDetails",
            "click .out": "log_out"
    },

    template: Handlebars.compile(template),

    initialize: function () {
        this.model.bind("change", this.render, this);
        this.model.bind("destroy", this.close, this);
    },

    render: function (eventName) {
        var ad = this.model.toJSON();
        console.log(ad);
        ad.cid = this.model.cid;
        $(this.el).html(this.template(ad));
        return this;
    },
4

0 に答える 0