AngularJS рдореЗрдВ рд▓рдВрдмреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди

AnglarJS рдорд╣рд╛рди рд╣реИ! рд▓реЗрдХрд┐рди рдЬрдм рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╡рд╛рд▓реА рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛, рдпрд╣ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ! рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬрдм рд╣рдорд╛рд░реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЛ AngularJS рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ред рд▓рдЧрднрдЧ 500 рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рдмрд┐рдирд╛ рджреЗрд░реА рдХреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рдкреНрд░рджрд░реНрд╢рди 7 рд╕реЗрдХрдВрдб рддрдХ рдЪрд▓рд╛ред рдмреЗрдХрд╛рд░!
рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджреЛ рдЕрдбрд╝рдЪрдиреЗрдВ рдорд┐рд▓реАрдВред рдПрдХ ng-repeat рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рдерд╛, рдФрд░ рджреВрд╕рд░рд╛ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рдеред
рдпрд╣ рдЖрд▓реЗрдЦ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ, рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИред рдпрд╣ рдЖрдкрдХреЛ рд╡рд┐рдЪрд╛рд░ рдФрд░ рд╕реБрдЭрд╛рд╡ рджреЗрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреА рддрд╛рдХрдд рдХрд╣рд╛рдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рди рддрд░реАрдХреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдирдЬреА-рд░рд┐рдкреАрдЯ рдирд┐рд░реНрджреЗрд╢ рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдзреАрд░реЗ-рдзреАрд░реЗ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

ng-repeat рдирд┐рд░реНрджреЗрд╢ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ 2500 рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рджреЛ-рддрд░рдлрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдорд┐рд╕рдХреЛ рд╣реЗрд╡рд░реА рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ AngularJS "рдЧрдВрджреЗ рдЪреЗрдХ" рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдЯреНрд░реИрдХрд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдЬреЛ рдПрдХ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдзреАрдорд╛ рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреБрдХреНрдд рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ


рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдХрд╛рдо рдХреЗ рдШрдВрдЯреЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛:
рд╕реВрдЪреА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢ рд▓рд┐рдЦрд╛ рдЬреЛ ng-repeat рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдЕрдкрдиреА $last рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдкрддрд╛ рд╣реИред рдЖрдзрд╛рд░ рддрд┐рдерд┐ рд╣рдорд╛рд░реА TimeTracker рд╕реЗрд╡рд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
 //       angular.module('siApp.services').directive('postRepeatDirective', ['$timeout', '$log', 'TimeTracker', function($timeout, $log, TimeTracker) { return function(scope, element, attrs) { if (scope.$last){ $timeout(function(){ var timeFinishedLoadingList = TimeTracker.reviewListLoaded(); var ref = new Date(timeFinishedLoadingList); var end = new Date(); $log.debug("## DOM  : " + (end - ref) + " ms"); }); } }; } ]); 

HTML рдореЗрдВ рдЙрдкрдпреЛрдЧ:
 <tr ng-repeat="item in items" post-repeat-directive>тАж</tr> 

Chrome рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ
Chrome рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХреЗ рдХрд╛рд▓рдХреНрд░рдо рдЯреИрдм (рд╕рдордпрд░реЗрдЦрд╛) рдкрд░, рдЖрдк рдИрд╡реЗрдВрдЯреНрд╕ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реНрд░реЗрдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдлреНрд░реЗрдо) рдФрд░ рдореЗрдореЛрд░реА (рдореЗрдореЛрд░реА) рдХрд╛ рдЖрд╡рдВрдЯрдиред рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЯреВрд▓ рдЙрдкрдпреЛрдЧреА рд╣реИред рдкреГрд╖реНрда рдлрд╝реНрд▓рд┐рдХрд░рд┐рдВрдЧ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИ рдЬрдм рдлрд╝реНрд░реЗрдо рддрд╛рдЬрд╝рд╛ рджрд░ 30 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕реЗ рдХрдо рд╣реЛрддреА рд╣реИред рдлрд╝реНрд░реЗрдо рдЯреВрд▓ рдкреГрд╖реНрда рдХреА рдкреНрд░рджрд░реНрд╢рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реАрдкреАрдпреВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд┐рддрдирд╛ рд╕рдордп рд▓реЗрддрд╛ рд╣реИред

рд╕реВрдЪреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдореВрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕реВрдЪреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдкреЗрдЬреЗрд╢рди рдпрд╛ рдЕрдВрддрд╣реАрди рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рд▓рдЧрд╛рдирд╛

рд╣рдорд╛рд░рд╛ рдкреГрд╖реНрдард╛рдВрдХрди рд╡рд┐рдзрд┐ AngularJS limitTo рдлрд╝рд┐рд▓реНрдЯрд░ (рд╕рдВрд╕реНрдХрд░рдг 1.1.4 рд╕реЗ) рдФрд░ рд╣рдорд╛рд░реЗ startFrom рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕рдВрдпреЛрдЬрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕реВрдЪреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕рдордп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИред
 //      $scope.currentPage = 0; $scope.pageSize = 75; $scope.setCurrentPage = function(currentPage) { $scope.currentPage = currentPage; } $scope.getNumberAsArray = function (num) { return new Array(num); }; $scope.numberOfPages = function() { return Math.ceil($scope.displayedItemsList.length/ $scope.pageSize); }; //   startFrom angular.module('app').filter('startFrom', function() { return function(input, start) { return input.slice(start); }; 

HTML рдореЗрдВ рдЙрдкрдпреЛрдЧред
 <!--     --> <button ng-repeat="i in getNumberAsArray(numberOfPages()) track by $index" ng-click="setCurrentPage($index)">{{$index + 1}}</button <!--   --> <tr ng-repeat="item in displayedItemsList | startFrom: currentPage * pageSize | limitTo:pageSize" /tr> 

рдпрджрд┐ рдЖрдк рдкреЗрдЬрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рднреА рдзреАрдореЗ рдлрд┐рд▓реНрдЯрд░ рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ, рддреЛ рдЪрд░рдг 5 рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рди рд╣реЛрдВ, рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реВрдЪреА рдЖрдЗрдЯрдо ng-hide рд▓рд┐рдП ng-hide рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЕрдВрддрд╣реАрди рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ

рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╣рдордиреЗ рдЕрдирдВрдд рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк AngularJS рдХреЗ рд▓рд┐рдП рдЕрдВрддрд╣реАрди рд╕реНрдХреНрд░реЙрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдиреБрдХреВрд▓рди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢


1. рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

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

2. рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ

рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред ng-repeat рдкреНрд░рддреНрдпреЗрдХ $ рдкрдЪ рдЪрдХреНрд░ рдкрд░ рд╕рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдпрд╣ рдмрд╣реБрдд рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, filteredItems() рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░реНрдб рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдзреАрд░реЗ-рдзреАрд░реЗ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛ред
 <li ng-repeat="item in filteredItems()"> <!--,      .--> <li ng-repeat="item in items"> <!--     --> 

3. рджреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдПрдХ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ)

рдЗрд╕ рдЙрдкрдпреЛрдЧреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЕрд░реНрде рдкреНрд░рджрд░реНрд╢рди рд╕реВрдЪреА рдХреЛ рдбреЗрдЯрд╛ рд╕реВрдЪреА рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХрдИ рдлрд╝рд┐рд▓реНрдЯрд░ рдкреВрд░реНрд╡-рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЪрд░ filteredLists рдЧрдП рд╕рдВрдЧреНрд░рд╣ рд╕рдВрдЧреНрд░рд╣ рдХреИрд╢ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП applyFilter рд╡рд┐рдзрд┐ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
 /*  */ //   var items = [{name:"John", active:true }, {name:"Adam"}, {name:"Chris"}, {name:"Heather"}]; //    $scope.displayedItems = items; //   var filteredLists['active'] = $filter('filter)(items, {"active" : true}); //   $scope.applyFilter = function(type) { if (filteredLists.hasOwnProperty(type){ //      $scope.displayedItems = filteredLists[type]; } else { /*     */ } } //   $scope.resetFilter = function() { $scope.displayedItems = items; } 

рджреЗрдЦрдиреЗ рдореЗрдВ:
 <button ng-click="applyFilter('active')"> </button> <ul><li ng-repeat="item in displayedItems">{{item.name}}<li></ul> 


4. рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдЬреА-рд╢реЛ рдХреЗ рдмрдЬрд╛рдп рдПрдирдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдпрджрд┐ рдЖрдк рд╕реВрдЪреА рдЖрдЗрдЯрдо рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдирдЬреА- рдЗрдлрд╝ (рддрдм рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 1.1.2) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред ng-if рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ ( ng-show рд╡рд┐рдкрд░реАрдд)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рддрддреНрд╡ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВред
 <li ng-repeat="item in items"> <p> {{ item.title }} </p> <button ng-click="item.showDetails = !item.showDetails">Show details</buttons> <div ng-if="item.showDetails"> {{item.details}} </div> </li> 

5. рдПрдирдЧреБрд▓рд░рдЬреЗрдПрд╕ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдЬреИрд╕реЗ рдПрдирдЬреА-рдорд╛рдЙрд╕реЗрдВрдЯрд░, рдПрдирдЬреА-рдореВрд╕рд▓реАрд╡, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ ng-mouseenter рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕реНрдХреНрд░реАрди рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХрд╛ рдХрд╛рд░рдг рдмрдиреАред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлреНрд░реЗрдо рджрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ 30 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕реЗ рдиреАрдЪреЗ рдерд╛ред рдПрдиреАрдореЗрд╢рди рдкреНрд░рднрд╛рд╡ рдФрд░ рд╣реЙрд╡рд░ рдкреНрд░рднрд╛рд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдз jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдмрд╛рдж рдореЗрдВ DOM рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рддрддреНрд╡реЛрдВ рд╕реЗ рд╕реВрдЪрдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jQuery.live () рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдорд╛рдЙрд╕ рдИрд╡реЗрдВрдЯ рдХреЛ рд▓рдкреЗрдЯрдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

6. рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛ред рдПрдирдЬреА-рд╢реЛ рдХреЗ рд╕рд╛рде рдмрд╣рд┐рд╖реНрдХреГрдд рдЖрдЗрдЯрдо рдЫрд┐рдкрд╛рдПрдВ

рд▓рдВрдмреА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдлрд╝рд┐рд▓реНрдЯрд░ рднреА рдЕрдзрд┐рдХ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдореВрд▓ рд╕реВрдЪреА рдХрд╛ рдЕрдкрдирд╛ рд╕рдмрд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИред рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрдм рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдбреЗрдЯрд╛ рдХреА рд╕реВрдЪреА рдХреЛ рдкреВрд░реНрд╡ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЙрд╕ рд╕рдордп рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдкрд░ рдмрдЪрддред
ng-repeat рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдореВрд▓ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рд╕рдмрд╕реЗрдЯ рджреЗрддрд╛ рд╣реИред AngularJS DOM рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдмрд╛рд╣рд░ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЛ рднреА рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ $destroy рдШрдЯрдирд╛ $destroy рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ $scope рд╕реЗ рднреА рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рдЬрдм рдЗрдирдкреБрдЯ рд╕рдВрдЧреНрд░рд╣ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рднреА рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдлрд┐рд░ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд╛рд▓ рдпрд╛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдХреНрд╕рд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реВрдЪреА рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ, рдирд┐рд░рдВрддрд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рдФрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд┐рдирд╛рд╢ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк ng-show рдФрд░ ng-hide рдирд┐рд░реНрджреЗрд╢реЛрдВ ng-show рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдлрд┐рд▓реНрдЯрд░ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде ng-show рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк ng-hide рдирд┐рд░реНрджреЗрд╢ рдореВрд▓ рд╕рдВрдЧреНрд░рд╣, $scope рдФрд░ DOM рдХреЗ рд╕рдмрд╕реЗрдЯ рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

7. рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗрдЯ рдХрд░рдирд╛: рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛

рдХреНрд▓реЙрдЬ 6 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╛рд░-рдмрд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рднреЗрдЬрдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЦреЛрдЬ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрд╡рд╛ рд╣реИ ред рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 /* */ //         350 . $scope.$watch('queryInput', function(newValue, oldValue) { if (newValue === oldValue) { return; } $debounce(applyQuery, 350); }); var applyQuery = function() { $scope.filter.query = $scope.query; }; 

 /* */ <input ng-model="queryInput"/> <li ng-repeat= item in items | filter:filter.query>{{ item.title }} </li> 

рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП


  1. рд╡рд┐рд╢рд╛рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдЧрдарди
  2. рдПрдВрдЧреБрд▓рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╡рд╛рд▓ рдХрд╛ рдорд┐рд╕рдХреЛ рд╣реЗрд╡рд░реА рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ
  3. рдПрдирдЬреА-рджреЛрд╣рд░рд╛рдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдкрд░ рд▓рдШреБ рд▓реЗрдЦ
  4. рдорд╛рдВрдЧ рдкрд░ рдмрдбрд╝рд╛ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
  5. рдЕрдЪреНрдЫрд╛ рд╕реНрдХреЛрдк рдЖрд░реНрдЯрд┐рдХрд▓
  6. рдЧрддрд┐рд╢реАрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП AngularJS рдкрд░рд┐рдпреЛрдЬрдирд╛
  7. рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

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


All Articles