1
# in pjax:success callback
@callController = ->
  if window.currentController != (controller = window.getController())
    window.currentController = controller
    window[controller + "_controller"].call()

# part of window.getController()
# return "users", for example
@getController = ->
  window.location.pathname.split("/")[1]

# controller code
@users_controller = ->
  console.log "code from users_controller"

如何为每个控制器代码编写析构函数?例如,当users更改为posts我需要执行时@users_controller.destroy()

或者告诉我这个问题的另一个解决方案:)

4

1 回答 1

1

您有当前控制器,因此您可以使用您已经使用currentController的相同技术查找名称。window[c + '_controller']然后,只需调用destroy您发现的内容:

@[@currentController + '_controller'].destroy() if(@currentController)
@currentController = controller
@[@currentController + '_controller']()

另请注意,您不需要callin ,因为该@currentController + '_controller'属性将是一个函数,因此您可以直接调用它;并且@应该在其中window,以便您可以使用@currentController而不是window.currentController.

于 2013-01-08T16:26:53.023 回答