【问题标题】:How do I call a post render function in Mozart?如何在莫扎特中调用后期渲染函数?
【发布时间】:2013-07-03 05:52:12
【问题描述】:
我有一个 Mozart 应用程序,我想在整个页面呈现后触发一个库/函数调用来装饰 DOM。
在一个带有 jQuery 的普通 HTML 应用程序中,我会做这样的事情:
$(document).ready(-> Library.decorate())
在这种情况下,我正在寻找某种在视图更改时会动态更新的 afterRender 回调或钩子,而不是仅将其应用于window.onload(因为在 DOM 更改后需要再次触发装饰调用)已渲染)。
【问题讨论】:
标签:
jquery
dom
coffeescript
mozart-mvc
【解决方案1】:
在 Layout 类上有一个事件 render:complete 会在渲染周期完成时触发:
在您的 app.coffee 或类似文件中:
App.Application = Mozart.MztObject.create()
App.Application.set 'layout', Mozart.Layout.create(
rootElement: '#main'
states: [
Mozart.Route.create
viewClass: App.HomePage
path: "/"
title: "Mozart"
# ...other routes...
]
)
App.Application.layout.bind 'render:complete', ->
# Your handler code here
Library.decorate()
render:complete 仅在渲染周期中的所有视图时发生,但请记住,如果您的应用在每个渲染周期后调用正在做大量的重新渲染(无论如何你都应该避免),它最终可能会被调用很多次。