0

私はパース関数でモデル化しました

var File = Backbone.Model.extend({
   ...
   parse: function(response) {
      console.log('Parsing response')
   }
});

var FileView = Backbone.View.extend({
  ...
  initialize: function(id) {
     this.file = new File({id: id.id});
     console.log('Fetching object')
     this.file.fetch();

     this.render();
   },

   render: function() {
      console.log('Rendering view');
      this.$el.html(this.template(this.file.JSON()));
   }
})

期待される結果は次のようになります。

Fetching object
Parsing response 
Rendering view

しかし、これは私が得たものです:

Fetching object
Rendering view
Parsing response 

どうしてこれなの?ドキュメントによると:

parse は、コレクションのモデルがサーバーによってフェッチで返されるたびに、Backbone によって呼び出されます。

モデルを取得した直後に parse 関数が呼び出されないのはなぜですか? これをどのように強制しますか?

4

1 に答える 1

1

ええ、しかし、モデルを取得するためにサーバーに非同期呼び出しを行っているため、実際には、応答を得る前に render が呼び出されています。次のようなことをしなければなりません:

this.file.fetch({success: function () { 
    //call render here
}});
于 2013-05-13T10:21:24.187 に答える