lib/generators/rails_script/install/templates/base.js.coffee in rails_script-0.2.0 vs lib/generators/rails_script/install/templates/base.js.coffee in rails_script-0.3.0
- old
+ new
@@ -1,15 +1,37 @@
window.App ||= {}
class App.Base
constructor: ->
+ if (window.jQuery) then @setClearEventHandlers() # clearing application event handlers only possible with jQuery
return this
+ ###
+ Run the new action for the create action. Generally the create action will 'render :new' if there was a problem.
+ This prevents doubling the code for each action.
+ ###
create: ->
if typeof $this.new == 'function'
return $this.new()
+ ###
+ Run the edit action for the update action. Generally the update action will 'render :edit' if there was a problem.
+ This prevents doubling the code for each action.
+ ###
update: ->
if typeof $this.edit == 'function'
- return $this.edit()
+ return $this.edit()
+
+
+ ###
+ Clear event handlers with a blank namespace. This will prevent window and document event handlers from stacking
+ when each new page is fetched. Adding a namespace to your events will prevent them from being removed between page
+ loads, i.e. "$(window).on 'scroll.app', myHandler"
+ ###
+ clearEventHandlers: ->
+ jQuery(document).on 'page:before-change', ->
+ for element in [window, document]
+ for event, handlers in jQuery._data(element, 'events')
+ for handler in handlers
+ if handler.namespace == '' then $(element).off event, handler.handler
\ No newline at end of file