Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Связать меню с плавающим окном (https://javascript.ru/forum/extjs/66455-svyazat-menyu-s-plavayushhim-oknom.html)

AirGraph 16.12.2016 00:41

Связать меню с плавающим окном
 
Всем привет!

Хочется связать bind_ом статус элемента меню disabled с наличием/отсутствием плавающего окна. Условно говоря, пока окно существует - disabled: true, как отсутствует - disabled: false. Подскажите как это выглядит в современных технологиях и где про это почитать (ну кроме мануала, где я про viewModel почитал, но понял не сильно много... :-)

Bologercs 16.12.2016 11:16

Цитата:

Сообщение от AirGraph (Сообщение 438140)
Всем привет!

Хочется связать bind_ом статус элемента меню disabled с наличием/отсутствием плавающего окна. Условно говоря, пока окно существует - disabled: true, как отсутствует - disabled: false. Подскажите как это выглядит в современных технологиях и где про это почитать (ну кроме мануала, где я про viewModel почитал, но понял не сильно много... :-)

Каким биндом? Где пример кода? Скрин?

Infarch 16.12.2016 11:39

А если окно сделать модальным? Тогда и байнд не нужен, и так все задизейблится.

AirGraph 16.12.2016 12:00

Не хочется вообще ничего модального...
Как-то оно моей молодостью и MS DOS_ом попахивает... :-)

AirGraph 16.12.2016 12:12

Blogercs:

Биндом вот таким:

bind: { disabled: '{somethingVerySpecial}'}

Пример кода чего? Меню? Вот:

http://docs.sencha.com/extjs/6.2.1/c....html#cfg-menu

Пример кода окна:

http://docs.sencha.com/extjs/6.2.1/c...ow.Window.html

AirGraph 16.12.2016 14:07

Читаем вот тут:

https://docs.sencha.com/extjs/6.2.1/...a_binding.html

под заголовком Binding and Component State:

When a component is assigned a reference to identify it, that component will publish some of its key properties in the ViewModel.

Вроде все понятно, только пара вопросов:

1. А floating компоненты публикуют свои свойства?
2. А что произойдет, когда мы сошлемся на свойство плавающего компонента, которого (пока или уже) нет?

Могу спросить иначе: как я должен обновлять данные ViewModel при создании и удалении плавающих компонентов?

Infarch 16.12.2016 14:55

Они то публикуют, вот только делают это в свою вьюмодель. Что произойдет? Ну тут ответ сложный, от "ничего" до "ничего хорошего". Если вас модальное окно смущает то тогда перед его открытием отключайте меню своим кодом, после закрытия же назад включайте. Связывание тут не шибко хорошая идея.

AirGraph 16.12.2016 15:51

Цитата:

Сообщение от Infarch (Сообщение 438191)
Они то публикуют, вот только делают это в свою вьюмодель.

А вот это удивительно! В какую в свою? Вот у меня есть приложение, у него есть Main (в качестве MainView), есть MainController и MainModel. Вот в этом самом MainView у меня есть где-то там тулбар с меню, в котором я сказал viewModel: {type: 'main'} и есть плавающее окно, в котором я это повторил. Получается я концептуально где-то неправ? Я пытался при создании и удалении окна изменять data в MainModel, а в формулах модели создал функцию, возвращающую необходимую часть data. И уже в bind, в меню, сослался на эту формулу. И ничего не работает... Получается, что я чего-то важного не понимаю. :-)
Цитата:

Сообщение от Infarch (Сообщение 438191)
Что произойдет? Ну тут ответ сложный, от "ничего" до "ничего хорошего". Если вас модальное окно смущает то тогда перед его открытием отключайте меню своим кодом, после закрытия же назад включайте. Связывание тут не шибко хорошая идея.

Ну это как-бы не интересно вовсе, хочется иной подход.

Спасибо за пояснения!

Infarch 16.12.2016 16:04

Изобразите пример в фидле. Так сложно рассуждать, без кода под рукой.

AirGraph 18.12.2016 22:47

Концептуально был неправ. Разобрался. Сделал одну ViewModel на все приложение. В частности, Bind_ом гораздо удобнее отключать и включать меню, чем своим кодом, как мне показалось.


Часовой пояс GMT +3, время: 06:46.