Попытка учиться: Объектная Переориентация и родовые функции в LISP!

Необходимо дать время для внесения изменений в компонент в DOM.

Один из способов сделать это - использовать window.setTimeout() для выполнения change_margin() в следующем цикле JavaScript.

toggle_menu_text() {
    this.menu_bar_status = !this.menu_bar_status;
    window.setTimeout(()=>this.change_margin());
}

Вышеуказанное задержит вызов функции, но теперь обнаружение изменений не будет работать. Поэтому мы должны запустить обратный вызов внутри Angular, используя зону. Вы можете использовать зону, вставив NgZone в конструктор вашего компонента и вызвав метод run().

toggle_menu_text() {
    this.menu_bar_status = !this.menu_bar_status;
    window.setTimeout(()=> this.zone.run(()=>this.change_margin()));
}

ОБНОВЛЕНО:

Как указано в комментарии. Я не верю, что вам нужно использовать зоны с setTimeout().

Когда я должен использовать zone.run в угловых 2

6
задан Community 23 May 2017 в 12:26
поделиться

5 ответов

Возможно, смотрите на примеры приложений, которые обойдены через в более поздних главах. Вы будете видеть, что классы и объекты являются просто другим инструментом в Вашем поле. Сопротивляйтесь желанию программировать Java с синтаксисом Lisp.

Другим местом для взгляда на является Успешный Lisp, главы 7 и 14 для основ, и главы 31 и часть 3,10 о пакетах и обрабатывающий крупные проекты.

Некоторый гуру Lisp (это, возможно, был Paul Graham, но я не уверен) когда-то сказал, что у него есть не нужный CLOS вообще все же.

править: Я думаю, что Ваш беспорядок может прибыть из того, что в Lisp, Вы не используете систему классов для организации пространств имен. Это сделано отдельно; эти два действительно не имеют никакого отношения друг к другу.

4
ответ дан 8 December 2019 в 13:03
поделиться

Если Вы действительно хотите понять CLOS, можно возвратиться и прочитать Искусство Протокола Метаобъекта, который обеспечивает основание и базовый код для Closette, версии подмножества CLOS.

5
ответ дан 8 December 2019 в 13:03
поделиться

Мы в Weblocks также используем CLOS в большой степени, таким образом, Вы могли бы хотеть просмотреть источник немного.

2
ответ дан 8 December 2019 в 13:03
поделиться

Если требуется овладеть книгой, "Объектно-ориентированное программирование В ЯЗЫКЕ COMMON LISP" Sonja E. Keene, Глава 11 (Разрабатывающий Усовершенствованную Программу CLOS: Потоки), содержит нетривиальный пример с охватом множественного наследования приблизительно 40 страниц.

Восемь классов обсуждены подробно (поток, входной поток, поток вывода, двунаправленный поток, символьный поток, поток байтов, дисковый поток и поток на ленте). Реальные классы, из которых пользователь, как ожидали бы, создаст экземпляры, затем получены с помощью множественного наследования.

Это более существенно, чем пример банковского счета в Практическом языке Common LISP. Вы могли бы также найти остальную часть книги Keene полезной в получении более глубокого понимания CLOS: целая книга о CLOS.

7
ответ дан 8 December 2019 в 13:03
поделиться

Большими приложениями CLOS является 1) CAPI из Lispworks 2), веб-сервер 3 статьи-http), очень большой пакет CLOS является CLIM 4), если Вам нравится OpenGenera (это - ОС Lisp с помощью языка Common LISP и некоторого предшественника ZetaLisp 5), меньшим пакетом является http://www.cliki.net/mel-base

Отношения Friedrich

0
ответ дан 8 December 2019 в 13:03
поделиться