【问题标题】:Backbone.marionette: jQuery document.ready not running on routeBackbone.marionette:jQuery document.ready 不在路由上运行
【发布时间】:2013-07-31 11:57:48
【问题描述】:

所以我有一个 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 加载”事件,所以块没有被执行?我不知道。任何帮助将不胜感激。

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

【问题讨论】:

  • 是什么给 DOM 添加了.gridster ul
  • 它们目前作为无序列表添加到模板中,然后gridster库在我的initialize函数中初始化它们

标签: javascript jquery backbone.js coffeescript marionette


【解决方案1】:

我认为您应该将代码添加到 onDomRefresh 方法中,而不是 initialize

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

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

【讨论】:

    猜你喜欢
    • 2011-06-07
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2016-12-16
    • 2017-05-31
    • 2021-10-23
    • 2020-09-03
    相关资源
    最近更新 更多