From 2af9191c751b8fe4d0cb4f461d6410b8e306e511 Mon Sep 17 00:00:00 2001 From: mo Date: Fri, 8 Sep 2017 21:08:26 -0600 Subject: install autoview on ajax load but skip elements that are already setup. --- app/assets/javascripts/initializers/auto_view_setup.js.coffee | 5 ++++- spec/javascripts/initializers/auto_view_setup_spec.js.coffee | 3 ++- 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 '
' + fixture.set '
' 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 '
' -- cgit v1.2.3