繁体   English   中英

如何确定视图是否已呈现? JavaScript的

[英]How to determine if a view has been rendered? javascript

我正在使用backbone.js创建我的应用程序

如下所示,我有一个layoutView,我用它来渲染布局,还有布局中的迷你配置文件。

我遇到的问题是时间问题。 在触发'renderProfile'方法之前,我需要首先完成'render'方法。 我怎样才能做到这一点?

Onethingaday.Views.Home ||= {}

class Onethingaday.Views.Home.LayoutView extends Backbone.View
  template: JST["backbone/templates/home/layout"]

  initialize: ->
    @options.user.bind('change',@render,@renderProfile, @)

  renderProfile: ->
    view = new Onethingaday.Views.Shared.MiniProfileView
      user: @options.user

    @$('.profile').html view.render().el

  render: ->
    $(@el).html(@template())
    @

您的情况就是我为Backbone编写LayoutManager的原因, http://github.com/tbranyen/backbone.layoutmanager

您应该做的是将子视图与主(布局)视图分开。

所以在你的路线回调你会有这样的事情:

// Initialize a Layout View
var profile = new Onethingaday.Views.Home.LayoutView();
// Initialize a MiniProfile View
var miniProfile = new Onethingaday.Views.Shared.MiniProfileView({
  model: user
});

// This appears synchronous in your code, so this should work fine
$(profile.render().el).find(".profile").html(miniProfile.render());

我会恳请你调查我的库,因为我认为子视图与布局相关联的声明方式非常优雅。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM