骨干多视图渲染堆栈?

时间:2013-10-05 18:50:24

标签: backbone.js

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

1 个答案:

答案 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文档

或者您可以将异步数据的提取移到视图之外并进入路由器(我可能采用的路径)。