2013-10-05 211 views
0

我的問題有很多類似的答案,但沒有我想要的。我的問題是: 我在骨幹路由器中呈現視圖。一個屏幕是用三個視圖構建的,由於渲染是異步的,我將每個視圖添加到#content元素,所以我無法控制渲染元素的順序。有任何想法嗎?我不想在其他視圖中混合顯示視圖。我想在路由器類中控制它。骨幹多視圖渲染棧?

回答

1

沒有看到你的代碼,你做了幾件事情。如果您想放入Marionette.js,您可以使用事件讓路由器知道它何時呈現它。

App = new Marionette.Application(); // somewhere before you initialize your rotuer 

// in your router 
var viewsToRender = 3; 
var view1El = new View({model: someModel}).render().el; 
var view2El = new View({model: someModel2}).render().el; 
... 
App.vent.on('viewRendered', function() { 
    viewsToRender -= 1; 
    if(viewToRender === 0) { 
    $('#content').append(view1El, view1E2, ...); 
    } 
}); 

// In your views 
onRender: function() { 
    App.vent.trigger('viewRendered'); 
} 

onRender文檔

或者你可以將你的異步數據讀取的你的意見之外,進入路由器(我可能會走的路線)。

+0

問題是我幾乎完成了我的項目,我不想將它重構成使用Marionete。下次我會使用Marionete,但是我現在需要在沒有它的情況下解決這個問題。沒有任何骯髒的黑客。感謝你的回答。 – gorgi93