рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
ExtJS 4 рдореЗрдВ, рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ
Ext.app.Controller
рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИред рдпреЗ рдирд┐рдпрдВрддреНрд░рдХ рдШрдЯрдХреЛрдВ рдФрд░ рдЙрдирдХреЗ рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рдЬреИрд╕реЗ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ ("рдШрдЯрдХ рдХреНрд╡реЗрд░реА") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рддрдерд╛рдХрдерд┐рдд
refs
рдХрд╛ рдЙрдкрдпреЛрдЧ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рд╛рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд░рддреЗ рд╣реИрдВред
рдпреЗ рдирд┐рдпрдВрддреНрд░рдХ рддрдм рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреГрд╢реНрдп рдмрдирд╛рдП рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рд╣реИрдВ, рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╕рднреА рдХреА рд╕реЗрд╡рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдЬрдЯрд┐рд▓рддрд╛
рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рддрдХрдиреАрдХреЗрдВ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рд╡рд╣рди рдХрд░ рд╕рдХрддреА рд╣реИрдВред
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд╛рд╕ рдЯреАрдореЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЕрдВрддрд┐рдо рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдорддреМрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдмрдирд╛рдП рдЧрдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ (рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде) рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рддрдм рднреА рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ рдЬрдм рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
ViewControllers
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 5 рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
Ext.app.ViewController
ред рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
-
listeners
рдФрд░reference
рд╡рд┐рдиреНрдпрд╛рд╕ рдЧреБрдгреЛрдВ рдХрд╛reference
, рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред - ViewControllers рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдЬреАрд╡рдирдЪрдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- ViewControllers рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдз рдЗрд╕реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдиреЗрд╕реНрдЯреЗрдб рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдШрдЯрдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдФрд░ рдЙрдирдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рджреГрд╢реНрдп рдХреЗ рдиреАрдЪреЗ рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдкрд░ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рд╢реНрд░реЛрддрд╛ (рд╢реНрд░реЛрддрд╛)
listeners
рдирдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдЯреА рдЬреЗрдПрд╕ 5 рдореЗрдВ рдЗрд╕реЗ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓реАрдВред рдирдП рд╢реНрд░реЛрддрд╛рдУрдВ рдХреА рдПрдХ рдФрд░ рдкреВрд░реА рдЪрд░реНрдЪрд╛ рдЖрдЧрд╛рдореА рд▓реЗрдЦ рдореЗрдВ рд╣реЛрдЧреА - "рдПрдХреНрд╕рдЯреА 5 рдЬреЗрдПрд╕ рдореЗрдВ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реНрд░реЛрддрд╛"ред ViewControllers рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рд╡реНрдпреВ рдШрдЯрдХ рдореЗрдВ
listeners
рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рд╣реИ:
Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', items: [{ xtype: 'textfield', fieldLabel: 'Bar', listeners: { change: 'onBarChange' // (scope) } }] }); Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', onBarChange: function (barTextField) { // 'change' } });
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,
onBarChange
рдирд╛рдо рдХреЗ
onBarChange
рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ
scope
рдирд╣реАрдВ рд╣реИред
Bar
рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ ViewController рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИред
рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ,
listeners
рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдореВрд▓ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдХреЛрдИ рджреГрд╢реНрдп рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╕реБрди рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╢рд╛рдпрдж рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдЬреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдП рдЧрдП рдереЗ? рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╕реНрдкрд╖реНрдЯ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', listeners: { collapse: 'onCollapse', scope: 'controller' }, items: [{ ... }] });
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХреНрд╕рдЯреАрдЬреЗрдПрд╕ 5 рдореЗрдВ рджреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╕реНрдХреЛрдкреНрд╕ рдФрд░ рдШреЛрд╖рд┐рдд рд╢реНрд░реЛрддрд╛ (рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рдиред )ред рд╣рдо рдирд╛рдорд┐рдд рд╕рдВрджрд░реНрдн рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдирд╛рдорд┐рдд рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП, рджреЛ рдирд╛рдо рдорд╛рдиреНрдп рд╣реИрдВ:
"this"
рдФрд░
"controller"
ред рдЬрдм рд╣рдо рдПрдорд╡реАрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ
"controller"
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░рд╛ рдЕрдкрдирд╛ рд╡реНрдпреВ рдХреЙрдиреНрдЯреНрд░реЛрд▓рд░ рд╣реЛрдЧрд╛ (рдФрд░ рд╡реНрдпреВрд╕реНрдЯреНрд░реАрдо рдХреЗ рд╡реНрдпреВ-
"controller"
рдирд╣реАрдВ рд╣реИ)ред
рдХреНрдпреЛрдВрдХрд┐
Ext.Component
рджреГрд╢реНрдп
Ext.Component
ред рд╣рдордиреЗ рдЗрд╕ рджреГрд╢реНрдп
xtype
рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЕрдиреНрдп рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ
xtype
рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ,
xtype
рд╣рдордиреЗ
xtype
рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдХреИрд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рдПрдВ:
Ext.define('MyApp.view.bar.Bar', { extend: 'Ext.panel.Panel', xtype: 'bar', controller: 'bar', items: [{ xtype: 'foo', listeners: { collapse: 'onCollapse' } }] });
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,
Bar
рджреГрд╢реНрдп
Foo
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрдкрдиреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рддрдм
Foo
рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ
collapse
рдШрдЯрдирд╛ рдХреЛ рд╕реБрдирддрд╛ рд╣реИред Ext JS рдФрд░ Sencha Touch рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдЗрди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдВрдШрд░реНрд╖ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 5 рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
Foo
рдореЗрдВ рдШреЛрд╖рд┐рдд рд╢реНрд░реЛрддрд╛ рд╡реНрдпреВрдХрдВрдЯреНрд░реЛрд▓рд░
Foo
рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдФрд░
Bar
- рд╡реНрдпреВрдХрдВрдЯреНрд░реЛрд▓рд░
Bar
рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рд╕рдВрджрд░реНрдн (рд╕рдВрджрд░реНрдн)
рдирд┐рдпрдВрддреНрд░рдХ рддрд░реНрдХ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', tbar: [{ xtype: 'button', text: 'Add', handler: 'onAdd' }], items: [{ xtype: 'grid', ... }] }); Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', onAdd: function () { // ... grid ... } });
рд▓реЗрдХрд┐рди рд╣рдо рдЯреЗрдмрд▓ (рдЧрд░реНрдб) рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ? ExtJS 4 рдореЗрдВ, рдЖрдк рдШрдЯрдХ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧ
refs
рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкрд╣рдЪрд╛рдирдиреЗ рдпреЛрдЧреНрдп рд╕рдВрдкрддреНрддрд┐ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреБрд░рд╛рдиреЗ рддрдХрдиреАрд╢рд┐рдпрдиреЛрдВ рдиреЗ
id
(рдФрд░
Ext.getCmp
)
Ext.getCmp
рдпрд╛
Ext.getCmp
(
Ext.getCmp
рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪрдпрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
id
рдХрд╛ рд▓рд╛рдн рд╢реАрдШреНрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдФрд░ DOM рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╣рдореЗрд╢рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
itemId
рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ (рдХреНрд╡реЗрд░реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕рд╣реА рдШрдЯрдХ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
lookupReference
рдЬреЗрдПрд╕ 5 рдореЗрдВ рдирдП
reference
рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
lookupReference
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', tbar: [{ xtype: 'button', text: 'Add', handler: 'onAdd' }], items: [{ xtype: 'grid', reference: 'fooGrid' ... }] }); Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', onAdd: function () { var grid = this.lookupReference('fooGrid'); } });
рдпрд╣
itemId = 'fooGrid'
рдФрд░ рдлрд┐рд░
this.down('#fooGrid')
рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рд▓реЗрдХрд┐рди "рд╣реБрдб рдХреЗ рддрд╣рдд" рдЕрдВрддрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
reference
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрд╡рд╛рдореА рджреГрд╢реНрдп рдореЗрдВ рдЦреБрдж рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреВрд╕рд░реЗ,
lookupReference
рд╡рд┐рдзрд┐ рдХреИрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрддреА рд╣реИ (рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЬреЛрдбрд╝ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рдорд╛рди рд▓реАрдЬрд┐рдП)ред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдпрд╣ рдХреИрд╢ рд╕реЗ рд▓рд┐рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЫрджреНрдо рдХреЛрдб рдореЗрдВ:
lookupReference: (reference) { var cache = this.references; if (!cache) { Ext.fixReferences(); // cache = this.references; // } return cache[reference]; }
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХреЛрдИ рдЦреЛрдЬ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрдВрдЯреЗрдирд░ рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдХрдиреЗрдХреНрд╢рди рдордХреНрдЦреА рдкрд░ рддрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдиреАрдЪреЗ рджреЗрдЦреЗрдВрдЧреЗ, рджрдХреНрд╖рддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдиреНрдп рдлрд╛рдпрджреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдХреИрдкреНрд╕реВрд▓реАрдХрд░рдг
рдПрдХреНрд╕рдЯреА рдЬреЗрдПрд╕ 4 рдПрдорд╡реАрд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕рдиреЗ рдХреБрдЫ рдЬреЛрдЦрд┐рдо рднреА рдЙрдард╛рдПред рдпрд╣ рддрдереНрдп рдХрд┐ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдиреЗ рд╕рднреА рд╕реНрддрд░реЛрдВ рдкрд░ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ "рджреЗрдЦрд╛" рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдерд╛, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдгред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ 100% рддреНрд░реБрдЯрд┐ рдореБрдХреНрдд рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣реА рдирдП рд╡рд┐рдЪрд╛рд░ рдЕрд╡рд╛рдВрдЫрд┐рдд рдорд┐рд▓рд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
рдпрд╣ рдХреБрдЫ рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ViewControllers рдореЗрдВ рд╢реНрд░реЛрддрд╛рдУрдВ рдФрд░ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╕рднреА рдХреНрдпреЛрдВрдХрд┐
reference
рдФрд░
listeners
рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ ViewController рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдиреЗрд╕реНрдЯреЗрдб рд╡рд┐рдЪрд╛рд░ рд╡рд░реНрддрдорд╛рди рдПрдХ рдХреЗ рдЕрдВрджрд░ рдХрд┐рд╕реА рднреА
reference
рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдпреЗ рдирд╛рдо рдЙрдЪреНрдЪ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред
рдЙрд╕реА рд╕рдордп,
listeners
рд╕рдВрдмрдВрдзрд┐рдд ViewController рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧрд▓рдд рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИрдВ, рдпреЗ рджреЛ рддрдВрддреНрд░ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЪрдпрдирдХрд░реНрддрд╛-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдЪрд┐рдд рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рджреГрд╢реНрдп рдПрдХ рдШрдЯрдирд╛ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рджреГрд╢реНрдп рдХреЗ ViewController рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ViewController рдореЗрдВ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рд╣реИ:
fireViewEvent
ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
Ext.define('MyApp.view.foo.Foo', { extend: 'Ext.panel.Panel', xtype: 'foo', controller: 'foo', tbar: [{ xtype: 'button', text: 'Add', handler: 'onAdd' }], items: [{ xtype: 'grid', reference: 'fooGrid' ... }] }); Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', onAdd: function () { var record = new MyApp.model.Thing(); var grid = this.lookupReference('fooGrid'); grid.store.add(record); this.fireViewEvent('addrecord', this, record); } });
рдпрд╣ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдЙрдЪреНрдЪрддрд░ рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рдорд╛рдирдХ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ:
Ext.define('MyApp.view.bar.Bar', { extend: 'Ext.panel.Panel', xtype: 'bar', controller: 'bar', items: [{ xtype: 'foo', listeners: { collapse: 'onCollapse', addrecord: 'onAddRecord' } }] });
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдпрд╣ рднреНрд░рд╛рдордХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ
fireViewEvent
рдЕрдВрджрд░ рдПрдХ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдирд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ ViewControllers рдирд╣реАрдВ рдереЗ, рддреЛ рдпрд╣ "рдлреВ" рджреГрд╢реНрдп рдХреЛрдб рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп
fireEvent
рдХреЙрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
fireEvent
рд╣реЛрдЧрд╛ред
рд╢реНрд░реЛрддрд╛ рдФрд░ рдИрд╡реЗрдВрдЯ рдбреЛрдореЗрди
Ext JS 4.2 рдореЗрдВ, рдЗрд╡реЗрдВрдЯ рдбреЛрдореЗрди MVC рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗред рдпреЗ рдбреЛрдореЗрди рдХреЙрд▓ рдХрд░рддреЗ рд╣реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд░реЛрдХ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдВрдпреЛрдЧ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдкрд╛рд╕ рднреЗрдЬ рджреЗрддреЗ рд╣реИрдВред
component
рдИрд╡реЗрдВрдЯ рдбреЛрдореЗрди рдореЗрдВ рдШрдЯрдХ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдХреЗ рдкрд╛рд╕ рд╕реАрдорд┐рдд рд╕рдорд░реНрдерди рд╣реИред
Ext JS 5 рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ ViewController рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрд╡реЗрдВрдЯ рдбреЛрдореЗрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
view
рдХрд╣рд╛ рдЬрд╛рддрд╛
view
ред рдпрд╣ рдЗрд╡реЗрдВрдЯ рдбреЛрдореЗрди ViewControllers рдХреЛ рдорд╛рдирдХ рд╢реНрд░рд╡рдг рдФрд░
control
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рджрд╛рдпрд░реЗ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреГрд╢реНрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд┐рд╢реЗрд╖ рдЪрдпрдирдХрд░реНрддрд╛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
Ext.define('MyApp.view.foo.FooController', { extend: 'Ext.app.ViewController', alias: 'controller.foo', control: { '#': { // collapse: 'onCollapse' }, button: { click: 'onAnyButtonClick' } } });
рд╢реНрд░реЛрддрд╛рдУрдВ рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
button
рдЪрдпрдирдХрд░реНрддрд╛ рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ рдпрд╛ рдХрд┐рд╕реА рднреА рдЙрдк-рдмрдЯрди рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрдЯрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЙрдк-рдЙрдк-рдЙрдк рдореЗрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЪрдпрдирдХрд░реНрддрд╛-рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВрдбрд▓рд░ рд╡рд┐рд░рд╛рд╕рдд рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд┐рдЫрд▓реЗ
Ext.app.Controller
рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ
Ext.app.Controller
рдФрд░ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рддрдХрдиреАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдпреЗ рдбреЛрдореЗрди рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдШрдЯрдирд╛ рдХреЛ рдЕрднреНрдпрд╛рд╡реЗрджрди рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ ( рдПрдХ рдШрдЯрдирд╛ рдХреЛ рдКрдкрд░ - - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред )ред рдпрд╣реА рд╣реИ, рдЬрдм рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдирдХ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЗрд╕реЗ рдорд╛рд▓рд┐рдХ ViewController рдХреЛ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдорд╛рддрд╛-рдкрд┐рддрд╛ ViewController (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреЛ рдкрджрд╛рдиреБрдХреНрд░рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрддрддрдГ,
Ext.app.Controller
рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ
component
рдИрд╡реЗрдВрдЯ рдбреЛрдореЗрди рдХреЛ рдЗрд╡реЗрдВрдЯ
Ext.app.Controller
рдЬрд╛рддрд╛ рд╣реИред
рдЬреАрд╡рди рдЪрдХреНрд░
рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдЕрднреНрдпрд╛рд╕ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрд╣ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдб рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдПрдХ рд╕реАрдорд╛ рдпрд╣ рдереА рдХрд┐ рдЬрдм рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпреЗ рдирд┐рдпрдВрддреНрд░рдХ рдкреВрд░реЗ рдЬреАрд╡рди рднрд░ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдореБрдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╖реНрдЯ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рджреЛрдиреЛрдВ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рднреА рдирд╣реАрдВред
рдЗрд╕рд▓рд┐рдП, рджреГрд╢реНрдп рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ, ViewController рддреБрд░рдВрдд рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреВрд░реЗ рдЬреАрд╡рди рдореЗрдВ рдЗрд╕ рджреГрд╢реНрдп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЬрдм рджреГрд╢реНрдп рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ ViewController рднреА рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдХреЛрдИ рджреГрд╢реНрдп рдпрд╛ рдХрдИ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ ( рдЬрд╣рд╛рдБ рдЕрдм рдХреЛрдИ рджреГрд╢реНрдп рдпрд╛ рдХрдИ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИрдВ, - рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░, рд╢рд╛рд╕реНрддреНрд░реАрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рд╣реИ; рд▓рдЧрднрдЧред )
рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдз рд▓рд┐рдВрдХ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд░рд╕реНрде рдШрдЯрдХреЛрдВ рдХреЛ рд▓реАрдХ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдирд┐рдореНрди рдореБрдЦреНрдп рдШрдЯрдирд╛рдПрдБ ViewController рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рдЙрдард╛рдИ рдЬрд╛рддреА рд╣реИрдВ:
- рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ initComponent рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдШрдЯрдХ
initConfig
рдпрд╛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛinitConfig
рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред - init -
initComponent
рдореЗрдВinitComponent
рд╡рд┐рдзрд┐ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рдВрджреБ рд╣реИ рдЬрд┐рд╕рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд░рдВрднрд┐рдХ рд╣реИред - initViewModel - рдЬрдм рд╡реНрдпреВ рд╡реНрдпреВрдХреЛрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдирд╖реНрдЯ - рдХрд┐рд╕реА рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕рдлрд╛рдИ (
callParent
рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ)ред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ViewControllers рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдорд╣рд╛рди рд╣реИрдВред рд╡реЗ ViewModels рдХреЗ рд╕рд╛рде рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреА рддрд╛рдХрдд рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЖрдЧрд╛рдореА рд░рд┐рд▓реАрдЬ рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд╛ рднреА рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗрдВрдЧреЗред
рдкреБрдирд╢реНрдЪ
рдкрд┐рдЫрд▓рд╛ рдкреЛрд╕реНрдЯ: рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 5: рдПрдорд╡реАрд╕реА, рдПрдорд╡реАрд╡реАрдПрдо, рдЖрджрд┐ред