Регистрация  |  Вход

Мой первый вопрос по Lightning Component: нет доступа к "методу" контроллера если компонент используется в LUX

Ну вот и у меня возник первый вопрос по Lightning Component. К счастью, он не "боевой", а связан с учебным заданием.

Вообще то говоря разработка под Lightning такая специфическая и самостоятельная тема, что хоть запиливай на форуме отдельный раздел.

сейчас есть немного времени, и я очень старательно и внимательно изучаю вот этот трейлхед модуль:

https://trailhead.salesforce.com/content/learn/modules/lex_dev_lc_basics

очень приличный по объему модуль, самый крупный из всех что я проходил, его оригинальная (и более расширенная) версия - это книжка Lightning Component Developer Guide - сопоставим по объему материала со старым обучающим мануалом по созданию приложения для HR отдела, которой мы здесь время от времени вспоминаем.

С самим модулем проблем нет. Там запиливается компонент, вставляется в Лайтнинг Апп контейнер, и из Дев Консоли открывается нажатием кнопки PREVIEW как самостоятельное приложение. Все работает.

Но для удобства я решил создать для компонента Lightning Component Tab, чтобы добавить его к уже существующим в LUX  приложениям (Apps) как отдельный Tab и таким образом работать с компонентом. И все нормально, пока не нажимаешь на кнопку вызывающую clickCreate "метод" в JS контроллере компонента и не получаешь ошибку:

ReferenceError: Action failed: c:expenses$controller$clickCreate [action is not defined]

"метод" clickCreate совершенно точно существует и работает, если запустить этот компонент как отдельное приложение. Но когда он ранится в LUX (one.app контейнере - как они это называют), то к нему нет доступа. И поди пойми почему так!

Ну вот и у меня возник первый вопрос по Lightning Component. К счастью, он не "боевой", а связан с учебным заданием.

Вообще то говоря разработка под Lightning такая специфическая и самостоятельная тема, что хоть запиливай на форуме отдельный раздел.

сейчас есть немного времени, и я очень старательно и внимательно изучаю  вот этот трейлхед модуль:

https://trailhead.salesforce.com/content/learn/modules/lex_dev_lc_basics

очень приличный по объему модуль, самый крупный из всех что я проходил, его оригинальная (и более расширенная) версия - это книжка  Lightning Component Developer Guide - сопоставим по объему материала со старым обучающим мануалом по созданию приложения для HR отдела, которой мы здесь время от времени вспоминаем.

С самим модулем проблем нет. Там запиливается компонент, вставляется в Лайтнинг Апп контейнер, и из Дев Консоли открывается нажатием кнопки PREVIEW как самостоятельное приложение. Все работает.

Но для удобства я решил создать  для компонента  Lightning Component Tab, чтобы добавить его к уже существующим в LUX  приложениям (Apps) как отдельный  Tab и таким образом работать с компонентом. И все нормально, пока не нажимаешь на кнопку вызывающую clickCreate "метод" в JS контроллере компонента и не получаешь ошибку:

ReferenceError: Action failed: c:expenses$controller$clickCreate [action is not defined]

"метод" clickCreate совершенно точно существует и работает, если запустить этот компонент как отдельное приложение. Но когда он ранится в LUX (one.app контейнере - как они это называют), то к нему нет доступа. И поди пойми почему так!


Den Brown
Вообще то говоря разработка под Lightning такая специфическая и самостоятельная тема, что хоть запиливай на форуме отдельный раздел.

Пожалуйста. Создал новый раздели и переместил эту тему Пользуйся!

[quote="Den Brown"]Вообще то говоря разработка под Lightning такая специфическая и самостоятельная тема, что хоть запиливай на форуме отдельный раздел.[/quote]

Пожалуйста. Создал новый раздели и переместил эту тему :) Пользуйся!

Так, а почему метод не доступен?
По ошибке очевидно, что переменная "action" в методе "clickCreate" "is not defined".
Предполагаю, что либо в компоненте не определен контроллер, либо названия апекс метода достаеться не правильно, либо такого метода нет в контроллере (апекс), либо он не @AuraEnabled.

Так, а почему метод не доступен?
По ошибке очевидно, что переменная "action" в методе "clickCreate" "is not defined".
Предполагаю, что либо в компоненте не определен контроллер, либо названия апекс метода достаеться не правильно, либо такого метода нет в контроллере (апекс), либо он не @AuraEnabled.

camamber
Так, а почему метод не доступен?

весь код скопирован с задания. и он прекрасно работает (все в нем есть что описано выше) если запускать этот компонент внутри отдельного приложения.

но внутри ЛайтКомп Таба он кидает ошибку. Использование компонента как ЛайтКомп Таба не является частью задания, поэтому никаких догадок почему так происходит у меня нет

[quote="camamber"]Так, а почему метод не доступен? [/quote]

весь код скопирован с задания. и он прекрасно работает (все в нем есть что описано выше) если запускать этот компонент внутри отдельного приложения.

но внутри ЛайтКомп Таба он кидает ошибку. Использование компонента как ЛайтКомп Таба не является частью задания, поэтому никаких догадок почему так происходит у меня нет

они только что переименовали тот модуль:

https://trailhead.salesforce.com/content/learn/modules/lex_dev_lc_basics

с Lightning Component Basic

на

Aura Components Basics

к чему бы это?

они только что переименовали тот модуль:

https://trailhead.salesforce.com/content/learn/modules/lex_dev_lc_basics

с [b]Lightning[/b] Component Basic 

на

[b]Aura[/b] Components Basics

к чему бы это?

Den Brown
они только что переименовали тот модуль:

https://trailhead.salesforce.com/content/learn/modules/lex_dev_lc_basics

с Lightning Component Basic

на

Aura Components Basics

к чему бы это?

Потому что в феврале будет Lightning Web Components - чтобы не путали

[quote="Den Brown"]они только что переименовали тот модуль:

https://trailhead.salesforce.com/content/learn/modules/lex_dev_lc_basics

с [b]Lightning[/b] Component Basic 

на

[b]Aura[/b] Components Basics

к чему бы это?[/quote]

Потому что в феврале будет Lightning Web Components - чтобы не путали

Maxim Elets
Потому что в феврале будет Lightning Web Components - чтобы не путали

Вот так я и подумал, что переименовать с горделивых Lightning Component на "да-это-всего-лишь-Aura" Components их могло только что-то очень значительное, как например переход на новый стандарт Web Component-ной разработки!

так что получается, что "старые" Lightning Component-ы - это уже легаси и велосипедо-изобретательство?

You can write new Lightning web components and add them to apps that contain Aura components. Or, you can iteratively migrate on your schedule by replacing individual Aura components in your app with Lightning web component

https://developer.salesforce.com/docs/component-library/documentation/lwc/lwc.interop_intro

нормально так?

вот какой-то супер-поверхностный трейлхед модуль для входа в тему:

https://trailhead.salesforce.com/en/content/learn/projects/quick-start-lightning-web-components

так там все три темы-заглавия - что-то совершенно новое для меня. Мне одному уже становится "страшно жить"?

[quote="Maxim Elets"]Потому что в феврале будет Lightning Web Components - чтобы не путали[/quote]

Вот так я и подумал, что переименовать с горделивых Lightning Component на "да-это-всего-лишь-Aura" Components их могло только что-то очень значительное, как например переход на новый стандарт Web Component-ной разработки!

так что получается, что "старые" Lightning Component-ы - это уже легаси и велосипедо-изобретательство? :D

[quote]You can write new Lightning web components and add them to apps that contain Aura components. Or, you can [b]iteratively migrate[/b] on your schedule by [b]replacing individual Aura components[/b] in your app with Lightning web component[/quote]
https://developer.salesforce.com/docs/component-library/documentation/lwc/lwc.interop_intro

нормально так?

вот какой-то супер-поверхностный трейлхед модуль для входа в тему:

https://trailhead.salesforce.com/en/content/learn/projects/quick-start-lightning-web-components

так там все три темы-заглавия - что-то совершенно новое для меня. Мне одному уже становится "страшно жить"?