0

我的问题有很多类似的答案,但没有我想要的。我的问题是:我在骨干路由器中渲染视图。一个屏幕由三个视图构建,并且由于渲染是异步的,并且我将每个视图都附加到 #content 元素,因此我无法控制渲染元素的顺序。有任何想法吗?我不想在其他视图中混合视图渲染。我想在路由器类中控制它。

4

1 回答 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 回答