我的问题有很多类似的答案,但没有我想要的。我的问题是: 我在骨干路由器中渲染视图。一个屏幕构建有三个视图,因为渲染是异步的,我将每个视图附加到#content元素我无法控制渲染元素的顺序。有任何想法吗?我不想在其他视图中混合使用视图渲染。我想在路由器类中控制它。
答案 0 :(得分: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文档
或者您可以将异步数据的提取移到视图之外并进入路由器(我可能采用的路径)。