# 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()

或给我看看这个问题的另一种解决方案:)

最佳答案

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

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


另请注意,由于call属性将是一个函数,因此您无需在其中使用@currentController + '_controller',因此可以直接调用它。和@应该是window,因此可以使用@currentController代替window.currentController

07-23 04:44