所以我有一个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问题,是否有人知道如何通过页面刷新在骨干网中进行路由?
答案 0 :(得分:2)
我认为您应该使用onDomRefresh
方法而不是initialize
添加代码。
一旦创建视图就会调用Initialize,因此当时视图的元素不会放在DOM中,而在渲染视图后触发onDomRefresh,已在DOM中显示或已重新生成渲染,所以它可能更适合您的需求。
您可以在文档中查看:Marionette's view