0

所以我有一个 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]
            )

我有一个 jQuerydocument.ready()块,一旦加载了 dom,就会运行一些代码。

我正在使用Gridster库,但是当页面路由时,此代码不会运行,因为 Gridster 网格没有被初始化。

当我刷新页面时,一切都按预期工作。

我猜想当页面路由时,jQuery 没有得到“dom 加载”事件,因此该块没有被执行?我不知道。任何帮助,将不胜感激。

为了解决使用 hack,有没有人知道如何通过页面刷新在骨干网中路由?

4

1 回答 1

2

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

Initialize 在视图创建后立即被调用,因此视图的元素当时并未放置在 DOM 中,而 onDomRefresh 在视图已呈现、已显示在 DOM 或已重新呈现后触发,因此它可能更适合您的需求。

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

于 2013-07-31T07:47:41.047 回答