Как сделать экспортированную функцию модуля ES6 доступной в домене? - PullRequest
0 голосов
/ 03 апреля 2020

Я использую модули ES6 в Chrome. У меня есть простое приложение, использующее vanilla html, JS и компоненты материалов для веб-сайтов.

В приложении. js У меня

import {
  slideToGetCode,
} from './animations.js';

в модуле анимации. js, у меня есть:


const slideToGetCode = () => {                                                                            
  setUsernameOnAccountRecovery();                                                                         

  setTimeout(() => {
    const loginContainerSlider = clearAnimationStates();                                                  
    loginContainerSlider.classList.add('slide-left-recover');                                             
  }, 250);                                                                                                
};


export {
  slideToGetCode,
};

В индексе. html , У меня есть

<script type="module" src="js/app.js"></script>
<script type="module" src="js/animations.js"></script>
<button "mdc-button" onclick="slideToGetCode()">Forgot Password?</button>

Тем не менее, я получаю (index):171 Uncaught ReferenceError: slideToGetCode is not defined, когда нажимаю на кнопку. Как я могу сделать slideToGetCode() доступным в DOM из модуля ES6?

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Вы также можете обновить app.js a la:

import {
  slideToGetCode,
} from './animations.js';

const button = document.querySelector('button');
button.addEventListener('click', sideToGetCode);

, что позволит вам не зависать от window и не помещать прослушиватели событий в HTML.

1 голос
/ 03 апреля 2020

Во-первых, я искренне чувствую, что Forgot Password и любая другая кнопка должны быть компонентами, а не жестко запрограммированы в index.html файле.

Однако я думаю, что ниже должно работать. См. Предлагаемые изменения в файле animations.js.

Файл animations.js.

const slideToGetCode = () => {                                                                            
  setUsernameOnAccountRecovery();                                                                         

  setTimeout(() => {
    const loginContainerSlider = clearAnimationStates();                                                  
    loginContainerSlider.classList.add('slide-left-recover');                                             
  }, 250);                                                                                                
};

window.slideToGetCode = slideToGetCode;
export {
  slideToGetCode,
};

Файл index.html

<script src="js/animations.js"></script>
<button "mdc-button" onclick="() => slideToGetCode()">Forgot Password?</button>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...