рдбреЗрдЯрд╛ рдкреИрдХреЗрдЬ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬреЛ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдкреИрдХреЗрдЬ рдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЪреМрдереА рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж рд╕реЗ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИред рдЖрдЬ рд╣рдо рдЗрд╕ рддрдХрдиреАрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред
рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ
рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 4 рдореЗрдВ рдбреЗрдЯрд╛ рдкреИрдХреЗрдЬ 43 рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рддреАрди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╛рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ - рдпрд╣ рдореЙрдбрд▓ , рд╕реНрдЯреЛрд░ рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ ред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ рд╣рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдкрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореЙрдбрд▓ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА
рдкреИрдХреЗрдЬ рдХрд╛ рдореВрд▓ рддрддреНрд╡ Ext.data.Model рд╡рд░реНрдЧ рд╣реИ, рдЬреЛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдПрдХ рдореЙрдбрд▓ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЙрддреНрдкрд╛рдж рдФрд░ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдореЙрдбрд▓ рдЦреЗрддреЛрдВ рдФрд░ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред Ext JS 3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдиреЗ Ext.data.Record рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ Ext.data.Model рдХрд╛ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдерд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдм рд╣рдо рдХреИрд╕реЗ рдореЙрдбрд▓ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ:
Ext.regModel('User', { fields: [ {name: 'id', type: 'int'}, {name: 'name', type: 'string'} ] });
рдЖрдорддреМрд░ рдкрд░, рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕реЗрдЯред рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИ:
new Ext.data.Store({ model: 'User', proxy: { type: 'ajax', url : 'users.json', reader: 'json' }, autoLoad: true });
рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ 'user.json' рдкрддреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдФрд░ Ext.data.Reader рдХреНрд▓рд╛рд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП AjaxProxy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░реНрд╡рд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП JsonReader рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред
рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЫрд╛рдВрдЯ, рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рд╕рдореВрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХреНрд╕рдЯреА рдЬреЗрдПрд╕ рдХреЗ рдЪреМрдереЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЧреНрд░реБрдкрд┐рдВрдЧрд╕реНрдЯреЛрд░ рд╡рд░реНрдЧ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдирдХ рд╕рдВрдЧреНрд░рд╣рдг рдХрдИ рдЫрдВрдЯрд╛рдИ, рдЫрд╛рдирдиреЗ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ:
new Ext.data.Store({ model: 'User', sorters: ['name', 'id'], filters: { property: 'name', value : 'Ed' }, groupers: { property : 'age', direction: 'ASC' } });
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рд▓реЗ рдирд╛рдо (рдлрд╝реАрд▓реНрдб рдирд╛рдо), рдФрд░ рдлрд┐рд░ рдлрд╝реАрд▓реНрдб рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; рд░рд┐рдХреЙрд░реНрдб рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ 'рдПрдб' рдирд╛рдо рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реА рд░рд╣реЗрдВ рдФрд░ рдЖрдпреБ (рдЖрдпреБ рдХреНрд╖реЗрддреНрд░) рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣реАрдХреГрдд рд╣реЛрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рд╕реНрдЯреЛрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдордп рдЫрдБрдЯрд╛рдИ, рдЫрд╛рдирдиреЗ рдпрд╛ рд╕рдореВрд╣реАрдХрд░рдг рдХреЗ рд╡рд┐рдХрд▓реНрдк рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░реЙрдХреНрд╕реА
рдКрдкрд░, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдХреИрд╕реЗ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 4 рдореЗрдВ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ: рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдм рд░реАрдбрд░ рдФрд░ рд░рд╛рдЗрдЯрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдореЗрдВ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдЕрдм рд╕реАрдзреЗ рдореЙрдбрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
Ext.regModel('User', { fields: ['id', 'name', 'age'], proxy: { type: 'rest', url : '/users', reader: { type: 'json', root: 'users' } } }); // new Ext.data.Store({ model: 'User' });
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рджреЛрд╣рд░реА рдЬреАрдд рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбреЗрдЯрд╛ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ - рддрджрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ, рдЕрдм рд╣рдо рднрдВрдбрд╛рд░рдг рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓реЛрдб рдФрд░ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ:
// (User) var User = Ext.getModel('User'); var ed = new User({ name: 'Ed Spencer', age : 25 }); // , // - RestProxy, // POST /users ed.save({ success: function(ed) { console.log("Saved Ed! His ID is "+ ed.getId()); } }); // 123 - ( GET- /users/123) User.load(123, { success: function(user) { console.log("Loaded user 123: " + user.get('name')); } });
рд╣рдо рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ HTML 5 рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░реЙрдХреНрд╕реА рднреА рд▓рд╛рддреЗ рд╣реИрдВ - LocalStorageProxy рдФрд░ SessionStorageProxyред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ HTML 5 рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рдкреНрд░реЙрдХреНрд╕реА рдЗрддрдиреЗ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рдХрд┐ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрдВрдЧреЗред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдЪрд╛рд░
рдкреНрд░реЙрдХреНрд╕рд┐рд╕ рдореЙрдбрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдХреЗрд╡рд▓ рдирдП рдлреАрдЪрд░реНрд╕ рдирд╣реАрдВ рд╣реИрдВред рдЕрдм рдЖрдк рдирдИ рдПрд╕реЛрд╕рд┐рдПрд╢рди API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдХреА рдПрдХ рдЧрдВрднреАрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореЙрдбрд▓ рдЖрдорддреМрд░ рдкрд░ рд▓рд╛рдЧреВ рддрд░реНрдХ рдХреЗ рд╕реНрддрд░ рдкрд░ рдкрд░рд╕реНрдкрд░ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдмреНрд▓реЙрдЧ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдкреЛрд╕реНрдЯ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╣рдо рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Ext.regModel('User', { fields: ['id', 'name'], hasMany: 'Posts' }); Ext.regModel('Post', { fields: ['id', 'user_id', 'title', 'body'], belongsTo: 'User', hasMany: 'Comments' }); Ext.regModel('Comment', { fields: ['id', 'post_id', 'name', 'message'], belongsTo: 'Post' });
рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбрд▓ рдореЗрдВ рдЕрдиреНрдп рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕рдВрдмрдВрдз рдХреЗ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореЙрдбрд▓ рд╕реНрд╡рдпрдВ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореЙрдбрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЗ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
// ID 123 User User.load(123, { success: function(user) { console.log("User: " + user.get('name')); user.posts().each(function(post) { console.log("Comments for post: " + post.get('title')); post.comments().each(function(comment) { console.log(comment.get('message')); }); }); } });
рдХрдИ рд╕рд╛рд░реЗ рдПрдХ-рд╕реЗ-рдПрдХ рд░рд┐рд╢реНрддреЗ (рд╣реИрдордиреА) рдПрдХ рдирдП рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдореЙрдбрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдХрдИ рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВред рдпрд╣ рд╕рдВрдмрдВрдз user.posts () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдореЗрдВ рдорд┐рд▓реЗ рдереЗред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╡реЙрд▓реНрдЯ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред рдмрджрд▓реЗ рдореЗрдВ, рдиреЛрдЯреНрд╕ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА () рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрдИ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдз рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред
рд╢рд╛рдпрдж рдЖрдк рдЗрд╕ рддрдереНрдп рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдереЗ рдХрд┐ рд╣рдордиреЗ User.load рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рд╕рдХреНрд╕реЗрд╕' рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреНрдпреЛрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреЛрд╕реНрдЯ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╡рд┐рд╢реЗрд╖ рд╕рдлрд▓рддрд╛-рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдВрддрд┐рдо рдФрд░ рд╕рдлрд▓ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рдордп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рд╡рд░реНрдгрд┐рдд рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкрд╣рдЪрд╛рди рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдлрд┐рд░ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░, рд╣рдо рдПрдХ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{ id: 1 name: 'Ed', posts: [ { id : 12, title: 'All about data in Ext JS 4', body : 'One of the areas that has seen the most improvement in Ext JS 4...', comments: [ { id: 123, name: 'S Jobs', message: 'One more thing' } ] } ] }
рдЖрдк рдХрд┐рд╕реА рднреА рд╕реНрд░реЛрдд рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд░реАрдбрд░ рдХрдХреНрд╖рд╛рдПрдВ рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рд░реВрдкреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреАред рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 3 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдореЙрдбрд▓ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ - рдЯреЗрдмрд▓реНрд╕ (рдЧреНрд░рд┐рдб), рдкреЗрдбрд╝ (рдЯреНрд░реЗрд╕) рдФрд░ рдлреЙрд░реНрдо (рдлреЙрд░реНрдо)ред
рдЕрд╡рд╕рд░ рдкреНрд░рджрд░реНрд╢рди
рд╣рдордиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдСрдирд▓рд╛рдЗрди рдбреЗрдореЛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдиреНрд╣реАрдВ рдореЙрдбрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рдбреЗрдореЛ рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрд╡рдпрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдм рдмреАрдЯрд╛ рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрднреА-рдХрднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреИрдХреЗрдЬ рдХрд╛рдлреА рд╕реНрдерд┐рд░ рд╣реЛрддрд╛ рд╣реИред
рд╕реНрдиреЗрд╣рд╛ рдЯрдЪ рдФрд░ рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд╛рдЪрд╛рд░ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдорд╛рд╕рд┐рдХ рд╕рдорд╛рдЪрд╛рд░ рдкрддреНрд░ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдРрд╕реЗ рд▓реЗрдЦ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА)ред