Показать сообщение отдельно
  #14 (permalink)  
Старый 12.01.2017, 22:25
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от Sogl Посмотреть сообщение
Не так. Должны маскироваться элементы items этой TabPanel, а не вся панель. Таким образом остается возможность пользоваться вкладками, но поменять в них ничего нельзя, пока не нажмешь на строку 1-й Grid.
В таком случае надо использовать maskElement: 'body', чтобы маска накладывалась на элемент body, а не основной el. См. fiddle.

Цитата:
Еще так и не понял как работает вот такая запись и почему в ней стоит оператор логического НЕ:
bind: {
    loading: '{!customerGrid.selection.orders}'
}
Это частично ошибочная строка, я второпях зачем-то использовал ассоциацию не на выбранную запись в customerGrid, а на данные в этой записи. Прошу прощения за конфуз. :) Должно выглядеть вот так:

bind: {
    loading: '{!customerGrid.selection}'
}


Ассоциация customerGrid.selection публикуется компонентом customerGrid и содержит выделенную запись в customerGrid. С левой стороны у нас название "config", который нужно изменить, когда меняется ассоциация. "Config" в кавычках, потому что на самом деле у компонентов нет опции loading, которую можно было бы сконфигурировать, но есть метод setLoading, который можно вызвать. Binding всё равно, конфиг это или нет, оно дёрнет метод и скормит ему данные из ассоциации, когда эти данные изменяются.

Дальше к оператору. Когда выделенных записей нет, нужна маска. Когда запись есть, маска не нужна - обратная логическая связь. Когда выделение есть, свойство customerGrid.selection содержит объект с выделенной записью. Когда выделения нет, это свойство равно null. Использованием логического НЕ мы убиваем двух зайцев: во-первых, инвертируем логическую связь в нужную нам сторону (есть запись - нет маски, и наоборот); во-вторых, приводим truthy объект "запись" к булевому значению true, или null к булевому false. Если бы нам нужна была прямая связь, то я бы использовал '{!!customerGrid.selection}', просто чтобы в метод setLoading передавалось всегда булевое значение, а не запись. Меньше потенциальных поводов для головной боли.

Цитата:
p.s. Кстати, Sencha Fiddle не показывает внесенные сторонние изменения в созданных fiddle? А то так сложно понять что было изменено.
Нет, такое Fiddle пока не умеет.
Ответить с цитированием