【问题标题】:Backbone multiple view render stack?骨干多视图渲染堆栈?
【发布时间】:2013-10-05 18:50:23
【问题描述】:

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

【问题讨论】:

    标签: backbone.js


    【解决方案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 文档

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

    【讨论】:

    • 问题是我几乎完成了我的项目,我不想将其重构为使用 Marionete。下次我肯定会使用木偶,但我现在需要在没有它的情况下解决这个问题。并且没有任何肮脏的黑客行为。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多