Маска Extjs() с сообщением

Я могу маскировать(), а затем размаскировать() диаграмму до и после ее отображения с помощью: chart.mask(), затем chart.unmask().

Но я хочу добавить сообщение о загрузке, пока оно скрыто, как мне это сделать? Я использую Extjs 4.1 с MVC.


person salamey    schedule 28.11.2013    source источник


Ответы (1)


Ext.Component (от которого наследует диаграмма) и Ext.dom.Element имеют метод mask. Но Ext.dom.Element один принимает аргумент msg.

Это означает, что вы можете достичь того, чего хотите, с помощью такого кода:

chart.el.mask('My message');

Теперь есть еще пара вещей, которые нужно принять во внимание.

Наиболее важно убедиться, что элемент определен до вызова его метода mask. По сути, из-за возможных задержек загрузки или отсрочки рендеринга может случиться так, что некоторые события или методы будут вызываться для компонентов, которые были уничтожены или еще не визуализированы.

Во-вторых, с этим методом у вас не будет загружаемого класса CSS по умолчанию. Вы можете передать его в качестве второго аргумента mask, если хотите; класс 'x-mask-loading'.

При всем при этом код должен выглядеть примерно так:

var maskEl = chart.getMaskTarget() // this one's marked as private... maybe we shouldn't use it
    || chart.getEl();
if (maskEl) {
    maskEl.mask("Loading...", Ext.baseCSSPrefix + 'mask-loading');
}

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

person rixo    schedule 28.11.2013