AngularJS рдореЗрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ

рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдЖрджрд┐рдо рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рди рддрд░реАрдХреЛрдВ рдХреЛ рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ред рдореИрдВ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓реЗрдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ред

рдбреЗрдореЛ , рд╕реИрдВрдбрдмреЙрдХреНрд╕ (рдХрдИ рдбреЗрдореЛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рд▓реА рдмрд╣реБрдд рд╕реА рд╕реВрдЪрд┐рдпрд╛рдБ (рдЬреЛрдбрд╝рдирд╛, рд╣рдЯрд╛рдирд╛, рдЖрдЗрдЯрдо рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ - рд╕реВрдЪреА рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :-))ред

рд╕реЗрд╡рд╛


рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдгреАрдп рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдФрд░ рдкрдврд╝реЗрдВред

рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХрд╛рд░рдЦрд╛рдирд╛:

angular.module('oi.list', []) .factory('oiList', function () { return function (scope, Resource) { scope.items = Resource.query() scope.add = Resource.add() ... } } 

рдЕрдм, рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдп рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред

 .controller('MyCtrl', ['$scope', 'ListRes', function ($scope, ListRes) { oiList($scope, ListRes); }]) 


рдХреИрд╢рд┐рдВрдЧ


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

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдердорд┐рдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреЛрдгреАрдп рдХреИрд╢ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдореЙрдбрд▓ рдирд╣реАрдВред рдпрд╛рдиреА resArr[0].get() Resource.query() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдРрд░реЗ рдХреЛ рд▓реЛрдб рдФрд░ рдХреИрд╢реНрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, resArr[0].get() рдХреИрд╢ рд╕реЗ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд▓реЗрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ resArr[0].get() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд░реЛрдз рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред рдЪреВрдВрдХрд┐ рдХреИрд╢ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореЙрдбрд▓ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдореЙрдбрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред

рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк value рдПрдХ oiListCache рд╕реЗрд╡рд╛ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕реНрдЯреЛрд░ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд▓рд┐рдВрдХ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдореЙрдбрд▓ рд▓реЗрддреЗ рд╣реИрдВред

 .value('oiListCache', {cacheRes: {}}) .factory('oiList', ['oiListCache', function (oiListCache) { return function (scope, cache, Resource) { if (angular.equals(oiListCache.cacheRes[cache], [])) { //        scope.items = oiListCache.cacheRes[cache] = Resource.query(); } else { //    scope.items = oiListCache.cacheRes[cache]; } } } 

рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ cache рд╡рд╛рд▓реА cache рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХреИрд╢ рд╣реЛред

рддрд░реАрдХреЛрдВ


рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдп рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рддреБрдореНрд╣рд╛рд░рд╛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЙрд╕ рд╡рд┐рдзрд┐ рдкрд░ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛ рдЬреЛ рд╕рднреА рдХреЗ рдкрд╛рд╕ рд╣реЛрдЧреА: рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рдирд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рддрддреНрд╡ рджрд┐рдЦрд╛рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИ рдЬрдм рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирдП рддрддреНрд╡ рдХреЛ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдмрдбрд╝реА рдкрдХрдбрд╝ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЕрднреА рддрдХ рдХреЛрдИ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЬреЛрдбрд╝рд╛ / рд╣рдЯрд╛рдП рдЧрдП рдЖрдЗрдЯрдо рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╕рдордп, рдХрд╛рдЙрдВрдЯрд░ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ рддреЛ рдпрд╣ рдШрдЯ рдЬрд╛рддреА рд╣реИред рдореИрдВ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛, рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдвреВрдВрдврдирд╛ рдЖрд╕рд╛рди рд╣реИ ред

рдЬреНрдЮрд╛рдд рдореБрджреНрджреЗ


рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдЦреБрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдереА, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓реЗрдЦ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЪрд╛рдирдХ рдХреЛрдИ рд╕рдордЭрджрд╛рд░ рдХреЛ рд╕рд▓рд╛рд╣ рджреЗрдЧрд╛ред

  1. рдХреИрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Resource рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдХреБрдВрдЬреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдирд╛рдо рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреИрд╢ рдХреБрдВрдЬреА рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

  2. рд╣рд░ рдмрд╛рд░ рдЬрдм рд╕реВрдЪреА рдмрджрд▓реА рдЬрд╛рддреА рд╣реИ, рддреЛ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдирдИ рд╡реНрдпрд╡рд╕реНрдерд╛ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реЙрд░реНрдЯ () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ scope.$$phase || scope.$apply() scope.$$phase || scope.$apply() рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИред

  3. рдЕрдм рдореЙрдбрд▓ рдХреЛ рд╕реНрдХреЛрдк рдирд╛рдо рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдирд╛рдо рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ред рдореИрдВ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ $scope.modelname = oiList($scope, 'list', ListRes) рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In190370/


All Articles