2014-09-30 44 views
0

我想檢索一個特定ID號的模型到我的視圖中。這裏是我的控制器看起來像(API工作正常):Marionette model.fetch()不按預期方式工作

控制器

var EventController = Marionette.Controller.extend({ 
    initialize: function(options){ 
     this.model = options.model; 
     this.mainRegion = options.mainRegion; 
    }, 

    edit: function(id) { 
     var _me = this; 
     //this is my model 
     var event = new Event({ 
      id: id 
     }); 
     event.fetch({ 
      success: function(){ 
       //this is my layout 
       _me.eventLayout = new EventView({ 
        model: event 
       }); 
       _me.mainRegion.show(_me.eventLayout); 
      } 
     }); 
    } 
}); 

的情況是這樣的:

  • 我控制器功能越來越使用路由器調用。
  • 我的主要佈局即eventLayout包含一些區域,它們都是Marionette中的eventViews。
  • model.fetch成功,我可以看到從API中獲取的細節。
  • 郵件佈局的所有子視圖都完美呈現。
  • 沒有任何用於主佈局模板的數據正在呈現。它只是被渲染的DOM,而不是數據。
+0

我覺得_me.eventLayout和_me.mainRegion兩者在大致同時調用,所以_me.mainRegion呈現即使_.wrap方法是不存在正常。所以儘量在_me.eventLayout之後渲染_me.mainRegion。您可以使用_.wrap方法。希望這可以幫助。您可以參考 http://stackoverflow.com/questions/12004534/backbonejs-rendering-problems – DimoMohit 2014-09-30 05:26:43

回答

0

試試這個:

edit: function (id) { 
    var _me = this, event, eventView; 

    event = new Event({ id: id }); 
    eventView = new EventView({ model: event }); 

    event.fetch().done(function() { 
     _me.mainRegion.show(eventView); 
    }); 
}