Advertisement
shmaltorhbooks

Untitled

Jun 12th, 2012
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. App.SuperPanel = Ext.extend(Ext.Panel, {
  2.     // initComponent вызывается у всех компонентов, которые видны
  3.     // если надо расширить какой-то store - юзай constructor вместо initComponent
  4.     //
  5.     // initComponent вызывается до того, как элемент начинает рендериться на странице
  6.     // но после того, как отшуршал конструктор, потому все параметры, которые ты отдал
  7.     // при инициализации уже применены к объекту и есть в this, но при этом ничего не вызывалось
  8.     // следовательно они ни на что еще не успели повлиять
  9.     initComponent: function(){
  10.         // applyIf применяет только если параметры не переданы
  11.         Ext.applyIf(this, {
  12.             title: 'defaultTitle',
  13.             html: 'defaultHtml',
  14.             buttons: [{
  15.                 text: 'defaultButton',
  16.                 handler: function(){
  17.                     console.log('default handler');
  18.                     console.log(this);
  19.                     console.log(this.ownerCt);
  20.                 }
  21.             }]
  22.         });
  23.         // apply применяет полюбому и перетирает то, что отдано при инициализации
  24.         // apply лучше юзать ПОСЛЕ applyIf, чтоб он перетер все ненужное
  25.         Ext.apply(this, {
  26.             closable: true
  27.         })
  28.         // парентовый initComponent. опять же, если будешь экстендить какой-то store, то
  29.         // надо будет вызывать {ObjectName}.superclass.constructor.call(this)
  30.         App.SuperPanel.superclass.initComponent.call(this);
  31.     }
  32. });
  33.  
  34. // defaults
  35. new App.SuperPanel({});
  36.  
  37. new App.SuperPanel({
  38.     title: 'title changed'
  39. });
  40.  
  41. new App.SuperPanel({
  42.     html: 'html changed'
  43. });
  44.  
  45. new App.SuperPanel({
  46.     buttons: [{
  47.         text: 'button changed'
  48.     }]
  49. });
  50.  
  51. new App.SuperPanel({
  52.     title: 'everything changed, except closable',
  53.     html:  'everything changed, except closable',
  54.     closable: false,
  55.     buttons: [{
  56.         text:  'everything changed, except closable'
  57.     }]
  58. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement