summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo <mo.khan@gmail.com>2017-09-08 21:08:26 -0600
committermo <mo.khan@gmail.com>2017-09-08 21:08:26 -0600
commit2af9191c751b8fe4d0cb4f461d6410b8e306e511 (patch)
tree55fa4a17765f23f183ab1dbefe24a026c8522081
parentc4364a98bfb8c13212ef70c2aab0aa91bfd3d804 (diff)
install autoview on ajax load but skip elements that are already setup.
-rw-r--r--app/assets/javascripts/initializers/auto_view_setup.js.coffee5
-rw-r--r--spec/javascripts/initializers/auto_view_setup_spec.js.coffee3
2 files changed, 6 insertions, 2 deletions
diff --git a/app/assets/javascripts/initializers/auto_view_setup.js.coffee b/app/assets/javascripts/initializers/auto_view_setup.js.coffee
index 8ac2dd83..2dce804e 100644
--- a/app/assets/javascripts/initializers/auto_view_setup.js.coffee
+++ b/app/assets/javascripts/initializers/auto_view_setup.js.coffee
@@ -2,10 +2,12 @@
class CakeSide.AutoViewSetup extends CakeSide.Behaviour
@on "ready"
+ @on "ajaxComplete"
execute: ->
for element in $('[data-autoview]')
- @install($(element))
+ $element = $(element)
+ @install($element) unless $element.data('autoview-setup-complete')
install: (element) ->
viewName = element.data('autoview')
@@ -14,3 +16,4 @@ class CakeSide.AutoViewSetup extends CakeSide.Behaviour
else
constructor = CakeSide.Proxy.create(CakeSide.Views, viewName)
CakeSide.AutoView.create(viewName, element, constructor)
+ element.data('autoview-setup-complete', true)
diff --git a/spec/javascripts/initializers/auto_view_setup_spec.js.coffee b/spec/javascripts/initializers/auto_view_setup_spec.js.coffee
index acd6013d..eb5786a5 100644
--- a/spec/javascripts/initializers/auto_view_setup_spec.js.coffee
+++ b/spec/javascripts/initializers/auto_view_setup_spec.js.coffee
@@ -11,10 +11,11 @@ describe "CakeSide.AutoViewSetup", ->
CakeSide.AutoView.views = {}
it 'attaches the autoview to the DOM element', ->
- fixture.set '<div data-autoview="My.ChangePassword"></div>'
+ fixture.set '<div id="item" data-autoview="My.ChangePassword"></div>'
subject.execute()
result = CakeSide.AutoView.views['My-ChangePassword'][0]
expect(result instanceof CakeSide.Views.My.ChangePassword).toEqual(true)
+ expect($('#item').data('autoview-setup-complete')).toEqual(true)
it "returns nil if the autoview cannot be discovered", ->
fixture.set '<div data-autoview="Unknown"></div>'