2013-09-18 2 views
2

Я определяю treepanel. И я пытаюсь добавить маску() для ожидания дерева загружается. Но не работает.Как скрыть дерево до загрузки успеха

Вот мой код

Ext.define('Example.example', { 
    extend: 'Ext.tree.Panel', 
    alias: 'widget.example', 
    title: 'example', 
    store: Ext.create('Ext.data.TreeStore', { 
    ... 
    listeners: { 
     'load': function (store, records, success) { 
      Ext.ComponentQuery.query('example').getEl().unmask(); // not working 
     }, 
     'beforeload': function (store, options) {          
      Ext.ComponentQuery.query('example').getEl().mask();// not working 
     } 
    } 
}) 
}); 

Как сделать эту рабочую благодарственное.

ответ

3

или использовать недокументированные ownerTree свойство:

beforeload: function() { 
    this.ownerTree.getEl().mask("Loading", 'x-mask-loading'); 
} 

Или зарегистрировать слушателей в методе, чтобы получить объем:

Ext.define('Example.example', { 
    // ... 
    ,initComponent: function() { 
     this.callParent(arguments); 

     this.getStore().on({ 
      scope: this 
      ,beforeload: function() { 
       this.getEl().mask("Loading", 'x-mask-loading'); 
      } 
     }); 
    } 
}); 
+0

Я получаю ошибку, например 'this.ownerTree.getEl (...) undefined' :( – freestyle

+0

Это означает, что ваш магазин начинает загружаться после регистрации слушателя, но перед тем, как панель дерева будет отображаться ... Оберните вызов с помощью 'if (this.ownerTree.rendered) {...}', чтобы избежать ошибки. – rixo

+2

Если вы хотите, чтобы дерево было замаскировано во время начальной загрузки, вы также должны добавить слушателя в событие рендеринга дерева с чем-то вроде 'if (this.store.isLoading()) {this.getEl(). mask()} '. – rixo

0

попробовать это один Ext.ComponentQuery.query('example').body.mask(); использовать тело вместо getEl()

+0

Я стараюсь, но получаю ошибку, например 'Ext.ComponentQuery.query (...). Body is undefined' – freestyle

+0

' Ext.ComponentQuer y.query ('example') 'возвращает вас и объект yes? – kuldarim

+0

Я тестирую с помощью 'alert (Ext.ComponentQuery.query ('example'));' in 'forforeload' и получать пустое предупреждение? – freestyle

Смежные вопросы