我的问题有很多类似的答案,但没有我想要的。我的问题是:我在骨干路由器中渲染视图。一个屏幕由三个视图构建,并且由于渲染是异步的,并且我将每个视图都附加到 #content 元素,因此我无法控制渲染元素的顺序。有任何想法吗?我不想在其他视图中混合视图渲染。我想在路由器类中控制它。
问问题
51 次
1 回答
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文档
或者您可以将异步数据的获取移到您的视图之外并进入路由器(我可能会采用的路线)。
于 2013-10-05T21:23:32.053 回答