parse.com を使用して Web アプリを開発し始めていますが、単純な問題で行き詰まっています。モデル (または Parse SDK のオブジェクト) を次のように定義しました。
Book.Model = Parse.Object.extend("book", {
// Default attributes for the book.
defaults: {
title: "placeholder...",
},
// Ensure that each book created has `title`.
initialize: function() {
if (!this.get("title")) {
this.set({"title": this.defaults.title});
}
},
});
およびコレクション:
Book.List = Parse.Collection.extend({
// Reference to this collection's model.
model: Book.Model,
initialize: function() {
},
});
次に、次のようなことを試してみると
var books = new Book.List();
books.fetch({
success: function(collection) {
console.warn(collection);
},
error: function(collection, error) {
// The collection could not be retrieved.
}
});
すべてがうまくいきます。ログ:
child {length: 5, models: Array[5], _byId: Object, _byCid: Object, model: function…}
_byCid: Object
_byId: Object
length: 5
models: Array[5]
__proto__: EmptyConstructor
しかし、成功メソッドの代わりにイベント コールバックを使用しようとすると、空の配列が返されます。コード:
books.on('reset', this.log());
books.fetch();
log: function() {
console.log(books);
}
およびログ:
child {length: 0, models: Array[0], _byId: Object, _byCid: Object, model: function…}
_byCid: Object
_byId: Object
length: 5
models: Array[5]
__proto__: EmptyConstructor
これは非常に奇妙です(各ソリューションは、コレクションがサーバーから取り込まれるのを待つと思うためです)。なぜこれが起こっているのか誰か知っていますか?
私は実際に Backbone Boilerplate と Parse.com js SDK を使用しています。