extjs 4 показывать маску при отметке/снятии флажка узлов

я пытаюсь проверить/снять отметку с определенного узла и его дочерних узлов, как показано ниже, он работает. Кроме маски загрузки. я не знаю в чем проблема. почему бы не показать маску?

onTreepanelCheckChange: function(node, checked, eOpts) {
    tree.setLoading( 'Wait...' );
    node.cascadeBy( function( n ) {
        n.set( 'checked', checked );
        if( n.data.p_id !== 0 ) n.expand();
    } );
    tree.setLoading( false );
}

Я пытался использовать tree.suspendLayouts(); перед функцией cacadeBy, но результат тот же


person Fırat KAPAR    schedule 25.10.2014    source источник


Ответы (1)


Попробуйте изменить метод на:

onTreepanelCheckChange: function(node, checked, eOpts) {
    tree.mask('Wait...');
    Ext.defer(function(){
        node.cascadeBy( function( n ) {
            n.set( 'checked', checked );
            if( n.data.p_id !== 0 ) n.expand();
        } );
        tree.unmask();
    },100);
}

Спиннер будет заморожен, но появится.

person Guilherme Lopes    schedule 26.10.2014
comment
спасибо за ответ, я пробовал tree.mask()/unmask(), также пробовал tree.body.mask()/unmask(), но я не вижу маску. когда я щелкаю родительский узел для проверки, дерево зависает до тех пор, пока не будут проверены все дочерние узлы. - person Fırat KAPAR; 26.10.2014
comment
Привет, Фират, я обновил свой пост. Это должно заставить маску появиться! - person Guilherme Lopes; 26.10.2014
comment
прежде всего его работа большое спасибо. но я хочу спросить то же самое больше. моя панель дерева имеет около 300 узлов. когда я пытаюсь проверить корневой узел, это занимает слишком много времени. как я могу повысить производительность? есть ли другой способ проверить все узлы? - person Fırat KAPAR; 26.10.2014