【问题标题】:How to determine if a view has been rendered? javascript如何确定视图是否已渲染? javascript
【发布时间】:2012-01-25 19:15:20
【问题描述】:

我正在使用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())
    @

【问题讨论】:

  • 您是否尝试过使用 $(document).ready(function(){ //页面加载后 }) ?
  • 我的解决方案对您没有帮助吗?

标签: javascript jquery backbone.js render timing


【解决方案1】:

您的情况是我为 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());

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

【讨论】:

  • 真的有两个news连续吗?
猜你喜欢
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 2011-05-10
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 2020-10-21
相关资源
最近更新 更多