如何确定视图是不是已渲染? javascript
Posted
技术标签:
【中文标题】如何确定视图是不是已渲染? javascript【英文标题】: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() //页面加载后 ) ? 我的解决方案对您没有帮助吗? 【参考方案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());
我恳请您调查一下我的库,因为我认为子视图与布局相关联的声明方式非常优雅。
【讨论】:
真的有两个new
s连续吗?以上是关于如何确定视图是不是已渲染? javascript的主要内容,如果未能解决你的问题,请参考以下文章
如何知道 PayPal Smart Payment Button 是不是已完成渲染