ExtJS 5 рдореЗрдВ ViewController рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

ExtJS 5 рдХреБрдЫ рд░реЛрдорд╛рдВрдЪрдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реБрдзрд╛рд░ рд▓рд╛рддрд╛ рд╣реИ: рд╣рдордиреЗ MVC рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП ViewModels, MVVM, рдФрд░ ViewControllers рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдирдиреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЪрд░рдг рджрд░ рдЪрд░рдг рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред





рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ



ExtJS 4 рдореЗрдВ, рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ Ext.app.Controller



рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИред рдпреЗ рдирд┐рдпрдВрддреНрд░рдХ рдШрдЯрдХреЛрдВ рдФрд░ рдЙрдирдХреЗ рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рдЬреИрд╕реЗ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ ("рдШрдЯрдХ рдХреНрд╡реЗрд░реА") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рддрдерд╛рдХрдерд┐рдд refs



рдХрд╛ рдЙрдкрдпреЛрдЧ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рд╛рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд░рддреЗ рд╣реИрдВред



рдпреЗ рдирд┐рдпрдВрддреНрд░рдХ рддрдм рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреГрд╢реНрдп рдмрдирд╛рдП рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рд╣реИрдВ, рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╕рднреА рдХреА рд╕реЗрд╡рд╛ рдХрд░рддреЗ рд╣реИрдВред



рдЬрдЯрд┐рд▓рддрд╛


рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рддрдХрдиреАрдХреЗрдВ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рд╡рд╣рди рдХрд░ рд╕рдХрддреА рд╣реИрдВред



рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд╛рд╕ рдЯреАрдореЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЕрдВрддрд┐рдо рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдорддреМрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдмрдирд╛рдП рдЧрдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ (рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде) рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рддрдм рднреА рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ рдЬрдм рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред



ViewControllers



рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 5 рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: Ext.app.ViewController



ред рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:





рд╢реНрд░реЛрддрд╛ (рд╢реНрд░реЛрддрд╛)


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 рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рдЙрдард╛рдИ рдЬрд╛рддреА рд╣реИрдВ:







рдирд┐рд╖реНрдХрд░реНрд╖



рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ViewControllers рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдорд╣рд╛рди рд╣реИрдВред рд╡реЗ ViewModels рдХреЗ рд╕рд╛рде рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреА рддрд╛рдХрдд рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЖрдЧрд╛рдореА рд░рд┐рд▓реАрдЬ рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд╛ рднреА рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗрдВрдЧреЗред



рдкреБрдирд╢реНрдЪ


рдкрд┐рдЫрд▓рд╛ рдкреЛрд╕реНрдЯ: рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 5: рдПрдорд╡реАрд╕реА, рдПрдорд╡реАрд╡реАрдПрдо, рдЖрджрд┐ред



All Articles