2013-07-31 29 views
0

因此,我有一个web应用程序,它可以从登录按钮路由到仪表板,在这里我运行一个initialize()函数,其中包含一个document.ready()块。问题是,在骨干网route上,似乎document.ready()块没有运行。这里是一些代码来clearify:Backbone.marionette:jQuery 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”事件,因此块没有得到执行?我不确定。任何帮助,将不胜感激。

并解决使用黑客,没有人知道如何路由在骨干网页刷新?

+0

什么增加'.gridster ul'到DOM? –

+0

它们现在被添加为模板中的无序列表,然后Gridster库在我的'initialize'函数中初始化它们 –

回答

2

我认为你应该在onDomRefresh方法而不是initialize中添加你的代码。

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

您可以检查出来的文档:Marionette's view

+0

这样做了,谢谢! –