0

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 を使用しています。

4

1 に答える 1