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"

各コントローラ コードのデストラクタ メソッドを作成するにはどうすればよいですか? たとえば、I need to executeにusers変更された場合。posts@users_controller.destroy()

または、この問題の別の解決策を教えてください:)

4

1 に答える 1

1

現在のコントローラーがあるので、既に使用しているのと同じ手法をcurrentController使用して名前を検索できます。次に、見つけたものをwindow[c + '_controller']呼び出すだけです。destroy

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

また、プロパティは関数になるため、直接呼び出すことができるためcall、そこには必要ないことに注意してください。の代わりに使用できるように、@currentController + '_controller'と を@含める必要があります。window@currentControllerwindow.currentController

于 2013-01-08T16:26:53.023 に答える