Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2015, 03:50
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Связанный (bind) компонент зависит от валидности формы
Для таблиц Ext.grid.Panel можно задать

bind: "{!grid.selection}"


чтобы связанный компонент зависил от того, выделено что-то в таблице или нет.

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

Такая запись не работает:

bind: "{!form.valid}"
Ответить с цитированием
  #2 (permalink)  
Старый 06.06.2015, 16:17
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Попробовал сделать следующим образом. Добавил в связанный компонент:

bind: {
	disabled: "{!form.isValid}"
}


А в форму добавил для этого случая метод:

getIsValid: function() {
	return this.isValid();
}


Увы, это пока не работает.
Ответить с цитированием
  #3 (permalink)  
Старый 06.06.2015, 16:44
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Вот пример в песочнице для разбора
https://fiddle.sencha.com/#fiddle/o66
Ответить с цитированием
  #4 (permalink)  
Старый 06.06.2015, 19:35
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

если хочется использовать bind надо класть данные во view model. не вижу где у вас это происходит. вот что у меня получилось на скорую руку:
https://fiddle.sencha.com/#fiddle/o68

кстати этот функционал уже давно реализован, но только для компонентов лежащих на form panel
http://docs.sencha.com/extjs/5.1/5.1...t-cfg-formBind
Ответить с цитированием
  #5 (permalink)  
Старый 06.06.2015, 20:40
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Спасибо за ответ! про formBind не знал. Сейчас посмотрю, можно ли его использовать в моем случае или нет.

вообще-то в сенче есть способ определить выделена ли строка в гриде или нет

grid.selection

и оно работает без viewModel.data

Вот поэтому я и хотел узнать, как свое сварганить.
Ответить с цитированием
  #6 (permalink)  
Старый 06.06.2015, 21:00
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Ваш ответ дал многое:

- во первых узнал о существовании lookupViewModel() - до этого пользовался getViewModel()

- во вторых мне понравилась идея отслеживать валидность не путем проверки влоб, а при помощи события validitychange

- ну и formBind узнал...

Спасибо еще раз!
Ответить с цитированием
  #7 (permalink)  
Старый 06.06.2015, 21:33
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

к сожалению в этом примере https://fiddle.sencha.com/#fiddle/o68 есть недостаток, при открытии окна сразу подсвечиваются красным невалидные поля.
Ответить с цитированием
  #8 (permalink)  
Старый 06.06.2015, 21:42
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Вторая проблема.

Команда this.lookupViewModel() в коде:

initComponent: function() {
		this.callParent(arguments);
		var viewModel = this.lookupViewModel();
		...
}


сбивает ссылку на форму (у меня окно, внутри окна форма с reference=form).

В итоге, просто если вызвать this.lookupViewModel() то ссылка обнуляется. С чем это связано не знаю. В итоге пришлось отказаться от initComponent в пользу контроллера окна (куда и перенес весь этот код).
Ответить с цитированием
  #9 (permalink)  
Старый 07.06.2015, 07:50
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

То что подсвечивается это решаемо. Используйте hasInvalidField вместо метода isValid (http://docs.sencha.com/extjs/5.1/5.1...asInvalidField). Я обновил свой фидл.

Да контроллер нужен по любому. Туда этот код вынести пожалуй идеологически правильно.
Ответить с цитированием
  #10 (permalink)  
Старый 07.06.2015, 11:59
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
Да контроллер нужен по любому. Туда этот код вынести пожалуй идеологически правильно.
непонятно почему ссылка сбрасывается
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разметка для Google closure compiler monolithed Оффтопик 11 04.09.2013 00:50