Backbone.marionette:jQuery document.ready没有在路由上运行

时间:2013-07-31 05:25:26

标签: javascript jquery backbone.js coffeescript marionette

所以我有一个Web应用程序,它从登录按钮路由到仪表板,我在其中运行initialize()函数,其中包含document.ready()块。问题是,在主干route上似乎没有运行document.ready()块。这里有一些代码要清楚:

以下是我的目标网页视图中的事件:

events:
    'click .pure-menu .signin': 
      () ->
        application.router.navigate('dash', {trigger: true})

然后将应用程序路由到我的仪表板视图:

module.exports = class DashView extends Backbone.Marionette.ItemView
    id: 'dash-view'
    template: template

    initialize: ->

        $ ->
            $(".gridster ul").gridster(
                widget_margins: [10, 10]
                widget_base_dimensions: [140, 140]
            )

我有一个jQuery document.ready()块,其中一些代码在加载dom后运行。

我正在使用Gridster库,但是当页面路由时,此代码无法运行,因为Gridster网格未初始化。

当我刷新页面时,每件事都按预期工作。

我的猜测是,当页面路由时,jQuery没有得到“dom loaded”事件,因此块没有被执行?我不确定。任何帮助将不胜感激。

要解决使用hack问题,是否有人知道如何通过页面刷新在骨干网中进行路由?

1 个答案:

答案 0 :(得分:2)

我认为您应该使用onDomRefresh方法而不是initialize添加代码。

一旦创建视图就会调用Initialize,因此当时视图的元素不会放在DOM中,而在渲染视图后触发onDomRefresh,已在DOM中显示或已重新生成渲染,所以它可能更适合您的需求。

您可以在文档中查看:Marionette's view