소스 검색

Fix empty x-init (#1993)

* Update x-init.js

* added test
Dede Muzaffer 3 년 전
부모
커밋
74c7ba4d55
2개의 변경된 파일10개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      packages/alpinejs/src/directives/x-init.js
  2. 9 0
      tests/cypress/integration/directives/x-init.spec.js

+ 1 - 1
packages/alpinejs/src/directives/x-init.js

@@ -5,4 +5,4 @@ import { evaluate } from "../evaluator";
 
 addInitSelector(() => `[${prefix('init')}]`)
 
-directive('init', skipDuringClone((el, { expression }) => evaluate(el, expression, {}, false)))
+directive('init', skipDuringClone((el, { expression }) => !! expression.trim() && evaluate(el, expression, {}, false)))

+ 9 - 0
tests/cypress/integration/directives/x-init.spec.js

@@ -35,3 +35,12 @@ test('can make deferred changes with $nextTick',
     `,
     ({ get }) => get('span').should(haveText('yo'))
 )
+
+test('x-init will not evaluate expression if it is empty',
+    html`
+        <div x-data="{ foo: 'bar' }" x-init=" ">
+            <span x-text="foo" x-ref="foo">baz</span>
+        </div>
+    `,
+    ({ get }) => get('span').should(haveText('bar'))
+)