Дисциплины - Проектирование динамических страниц

Динамика AlpineJS - Установка AlpineJS - Магические свойства Alpine

В Alpine есть «магические свойства»: $el, $refs, $event и т.д. Мы можем добавить свои варианты, например свойство $hello — функция, которая будет выводить сообщение «Hello!». Делается это довольно просто:

Alpine.addMagicProperty('hello', function ($el) {
	alert('Hello!');
});

И используется так:

<div x-data @click="$hello">Click my</div>

Обратите внимание, что для создания своего «магического свойства» используется объект Alpine, то есть на момент добавления свойства, Альпина должна быть загружена. Проверим через defer.

<html>
<head>
	...
	<script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" defer></script>
</head>
<body>
	<div x-data @click="$hello">Click my</div>
	
	<script>
		Alpine.addMagicProperty('hello', function ($el) {
			alert('Hello!');
		});
	</script>
</body>
</html>

Этот вариант приведёт к ошибке Uncaught ReferenceError: Alpine is not defined. Происходит это из-за того, что наш код сработает до загрузки Альпины (которая ждет DOMContentLoaded).

Если убрать defer, то всё прекрасно работает, но тогда мы теряем возможность асинхронной загрузки...

Используем DOMContentLoaded

<html>
<head>
	...
</head>
<body>
	<div x-data @click="$hello">Click my</div>
	
	<script>
		document.addEventListener('DOMContentLoaded', () => {
			Alpine.addMagicProperty('hello', function ($el) {alert('Hello');});
		});
	</script>
	
	<script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js"></script>
</body>
</html>

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
00421-00422 ИИТ БГУИР
00423 ИИТ БГУИР
10421-10422 ИИТ БГУИР
10423 БГУИР
20421 БГУИР
30421 БГУИР
30423 БГУИР
40421 ИИТ БГУИР
40423 БГУИР


Изображения Видео

1. JavaScript. Функциональное программирование. Лекция 2. Преобразование данных <iframe width="560" height="315" src="https://www.youtube.com/embed/EBKzRg4aTro" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2. JavaScript. Функциональное программирование. Лекция 2 (продолжение) <iframe width="560" height="315" src="https://www.youtube.com/embed/phyt4PFk6Pc" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
3. HTML5 http://erud.by/files/books/HTML5.docx
4. ООП в JavaScript http://erud.by/object_orient_program/586
5. Фоновое видео jQuery http://johnpolacek.github.io/BigVideo.js
Учебная программа