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;
},