소스 검색

Bug - Alias for global persist shared between different properties (#2320)

* Add failing test

* Allow multiple aliases when using Alpine.$persist

* Remove comment
Simone Todaro 3 년 전
부모
커밋
1ff2f77077
2개의 변경된 파일27개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      packages/persist/src/index.js
  2. 26 0
      tests/cypress/integration/plugins/persist.spec.js

+ 1 - 1
packages/persist/src/index.js

@@ -27,7 +27,7 @@ export default function (Alpine) {
         })
     }
 
-    Alpine.$persist = persist()
+    Object.defineProperty(Alpine, '$persist', { get: () => persist() })
     Alpine.magic('persist', persist)
 }
 

+ 26 - 0
tests/cypress/integration/plugins/persist.spec.js

@@ -226,3 +226,29 @@ test('can persist using global Alpine.$persist within Alpine.store',
         get('span').should(haveText('Malcolm'))
     },
 )
+
+test('multiple aliases work when using global Alpine.$persist',
+    [html`
+        <div x-data>
+            <input x-model="$store.name.firstName">
+
+            <span x-text="$store.name.firstName"></span>
+            <p x-text="$store.name.lastName"></p>
+        </div>
+    `, `
+        Alpine.store('name', {
+            firstName: Alpine.$persist('John').as('first-name'),
+            lastName: Alpine.$persist('Doe').as('name-name')
+        })
+    `],
+    ({ get, window }, reload) => {
+        get('span').should(haveText('John'))
+        get('p').should(haveText('Doe'))
+        get('input').clear().type('Joe')
+        get('span').should(haveText('Joe'))
+        get('p').should(haveText('Doe'))
+        reload()
+        get('span').should(haveText('Joe'))
+        get('p').should(haveText('Doe'))
+    },
+)