рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рддрд┐рдорд╛рди рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕реА рдкреГрд╖реНрда рдкрд░ рдирдИ рдЪреАрдЬреЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЪреАрдЬреЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рддреЛ рд╣рдорд╛рд░рд╛ рдорд╛рд░реНрдЧ /thing/:id рдЬреИрд╕рд╛ рд╣реИред рдПрдХ рдирдИ рдЪреАрдЬрд╝ рдмрдирд╛рддреЗ рд╕рдордп рд╡реЗ /thing/new рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдЪреАрдЬрд╝ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд╣реЗрдЬ рд▓реА рдЬрд╛рддреА рд╣реИ рддреЛ рд╣рдо рдорд╛рд░реНрдЧ рдХреЛ / рдЪреАрдЬрд╝ / 1234 (рдпрд╛ рдЬреЛ рднреА рдЗрд╕рдХреА рдирдИ рдЖрдИрдбреА рд╣реИ) рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдм рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рд╕рдорд╛рди рд╣реИред рд╣рдо рдмрд╕ рдкрде рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдм рд╕рд╣реА рд▓рд┐рдВрдХ рдХреЛ рдмреБрдХрдорд╛рд░реНрдХ рдХрд░ рд╕рдХреЗ, рдЖрджрд┐ред
рдорд╛рд░реНрдЧ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо/рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $ рд╕реНрдерд╛рди (рдорд╛рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдирд╣реАрдВ) рдкрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдиреЗ рд╕реЗ рдХрд╛рдо рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рднреА рд╣реИрдВред
+1, рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
@cgross рдЪреВрдВрдХрд┐ $ рд╕реНрдерд╛рди рд╕реЗрд╡рд╛
$location.path("/thing/"+thing.id).replace().reload(false)
рдкреАрдПрд╕ рдХреНрдпрд╛ рдпрд╣ рдХреНрд░рд┐рд╕ рдЧреНрд░реЙрд╕ рд╣реИ рдЬрд┐рд╕рдиреЗ рдПрдХреНрд▓рд┐рдкреНрд╕ рдиреЗрдмреБрд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ?
рд╣рд╛рдВ :)
+1: +1:
+1
рдЕрднреА, рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдЬрд╛рдд рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд░реНрдЯреА рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
$scope.$on('$locationChangeSuccess', function(event) {
// Want to prevent re-loading when going from /dataEntry/1 to some other dataEntry path
if ($route && $route.current && $route.current.$route.templateUrl.indexOf('dataEntry') > 0) {
$route.current = lastRoute; //Does the actual prevention of routing
}
});
+1
+1
+1
+1
+1
рдпрд╣рд╛рдБ preventDefault()
рд▓рд┐рдП $routeChangeStart
рд╕рдорд░реНрдерди рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИред рддреБрдо рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?
рдкреНрд░рддрд┐рдмрджреНрдз: https://github.com/redhotsly/angular.js/commit/f8ac46e6ac9d76cf855077d21b68b4c2c8043db1
рдореИрдВ рдХреБрдЫ рджрд┐рдиреЛрдВ рд╕реЗ @qualidafial рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдм рдкреАрдЖрд░ рддреИрдпрд╛рд░ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдирдИ notify
рд╡рд┐рдзрд┐ рдмрдирд╛рдИ рд╣реИ рдЬреЛ рд╕реНрдерд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рдПрдХ рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рдкреБрдирдГ рд▓реЛрдб рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рд░реВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд╣реАрдВ рдЫреВрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА рд░реВрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рддрдм рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рдЖрдк рдорд╛рдирдХ AngularJS рд░реВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрдЬрд╛рдп ui-router
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг: $location.path('/client/2').replace().notify(false);
рдореИрдВрдиреЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдмрд┐рдЯреНрд╕ рднреА рдХрд╛рдо рдХрд┐рдП рд╣реИрдВред
+1
рдПрдХ рдФрд░ +1
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА @lrlopez 'рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЬрд╛рджреВ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
+1
+1
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдкреАрдЖрд░ https://github.com/angular/angular.js/pull/2398 рдХреЛ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ URL рдФрд░ рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧ рдХреЗ рдмреАрдЪ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЪрд░реНрдЪрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд▓рдВрдмреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╣реИред
рдореБрдЭреЗ рдЕрдкрдиреА рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд░рдЦреВрдВрдЧрд╛ рддрд╛рдХрд┐ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдпрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдХрд░ рд╕рдХреВрдВред рдзрдиреНрдпрд╡рд╛рдж!
+1
+1, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :(
+1
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣рд╛рдВ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг: https://github.com/angular/angular.js/issues/1699#issuecomment -22511464
рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХрд╛рд░рдЦрд╛рдирд╛ рдмрдирд╛рдпрд╛ рд╣реИ (@shahmirn рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░):
/**
* HACK Do not reload the current template if it is not needed.
*
* See AngularJS: Change hash and route without completely reloading controller http://stackoverflow.com/questions/12115259/angularjs-change-hash-and-route-without-completely-reloading-controller
*/
app.factory('DoNotReloadCurrentTemplate', ['$route', function($route) {
return function(scope) {
var lastRoute = $route.current;
scope.$on('$locationChangeSuccess', function() {
if (lastRoute.$$route.templateUrl === $route.current.$$route.templateUrl) {
console.log('DoNotReloadCurrentTemplate not reloading template: ' + $route.current.$$route.templateUrl);
$route.current = lastRoute;
}
});
};
}]);
рдХреИрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ:
app.controller('MyCtrl',
['$scope', 'DoNotReloadCurrentTemplate',
function($scope, DoNotReloadCurrentTemplate) {
DoNotReloadCurrentTemplate($scope);
}]);
рд╕реНрд░реЛрдд: http://stackoverflow.com/a/16496112/990356
рдпрджрд┐ рдЖрдк рдорд╛рд░реНрдЧ рдкрд░ "reloadOnSearch" рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реИрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИред
+1
рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рдПрдирдЬреА-рд╡реНрдпреВ рдЬреАрд╡рдирдЪрдХреНрд░ рдмрдирд╛рдирд╛/рдирд╖реНрдЯ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ (рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдорд╛рд░рддрд╛ рд╣реИ)ред
@tkrotoff рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЪреВрдВрдХрд┐ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдИрд╡реЗрдВрдЯ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд░рджреНрдж рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд░реВрдЯрд╕реНрдХреЛрдк рдкрд░ рдПрдХ рдкреНрд░рд╕рд╛рд░рдг рдЬреЛрдбрд╝рд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдЕрднреА рднреА рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:
/**
* HACK Do not reload the current template if it is not needed.
*
* See AngularJS: Change hash and route without completely reloading controller http://stackoverflow.com/questions/12115259/angularjs-change-hash-and-route-without-completely-reloading-controller
*/
app.factory('DoNotReloadCurrentTemplate', ['$route', '$rootScope', function($route, $rootScope) {
return function(scope) {
var lastRoute = $route.current;
scope.$on('$locationChangeSuccess', function() {
if (lastRoute.$$route.templateUrl === $route.current.$$route.templateUrl) {
console.log('DoNotReloadCurrentTemplate not reloading template: ' + $route.current.$$route.templateUrl);
$rootScope.$broadcast('locationChangedWithoutReload', $route.current);
$route.current = lastRoute;
}
});
};
}]);
рдлрд┐рд░:
app.controller('MyCtrl',
['$scope', 'DoNotReloadCurrentTemplate',
function($scope, DoNotReloadCurrentTemplate) {
DoNotReloadCurrentTemplate($scope);
$rootScope.$on('locationChangedWithoutReload', function(event, route) {
// set location specific breadcrumbs
$scope.breadcrumbs = assembleBreadCrumbs();
// do something for specific route
if (route.$$route.action == 'item') {
$scope.item = $scope.items[params.itemId];
$rootScope.title = $scope.item.name;
}
});
}]);
рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╖рдп рд▓реЗрдЦрдХ рдХреЗ рдкрд╛рд╕ рд╣реИ рдФрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
app.factory('skipReload', [
'$route',
'$rootScope',
function ($route, $rootScope) {
return function () {
var lastRoute = $route.current;
var un = $rootScope.$on('$locationChangeSuccess', function () {
$route.current = lastRoute;
un();
});
};
}
]);
рдЙрдкрдпреЛрдЧ:
app.controller('ThingCtrl', ['$scope', '$http', '$location', 'skipReload', function ($scope, $http, $location, skipReload) {
...
$scope.submit = function () {
...
$http.post('thing', thing).success(function (id) {
skipReload();
$location.path('/thing/' + id).replace();
});
};
}]);
рд╕реНрдерд╛рдпреА рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд░реВрдЯ рд░реАрд▓реЛрдб рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдП рдпрд╛ рдирд╣реАрдВ, рдЙрд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд░реВрдЯрд┐рдВрдЧ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ/рдЪреАрдЬрд╝/рдирдпрд╛ рдкрд░ рд░реВрдЯ рдХрд┐рдпрд╛ рдФрд░ рджреГрд╢реНрдп рдкрд┐рдЫрд▓реА рдЬреЛрдбрд╝реА рдЧрдИ рдЪреАрдЬрд╝/рдЪреАрдЬрд╝/5 рд╕реЗ рд▓рд┐рдВрдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдореИрдВ рдЪреАрдЬрд╝ 5 рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛)ред рдЯреЗрдореНрдкрд▓реЗрдЯ рдпреВрдЖрд░рдПрд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рд╣реИрдХ рдареАрдХ рдПрдХ рд░реВрдЯ рд░реАрд▓реЛрдб рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВрдиреЗ рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ (рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП) рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ:
app.factory('location', [
'$location',
'$route',
'$rootScope',
function ($location, $route, $rootScope) {
$location.skipReload = function () {
var lastRoute = $route.current;
var un = $rootScope.$on('$locationChangeSuccess', function () {
$route.current = lastRoute;
un();
});
return $location;
};
return $location;
}
]);
app.controller('ThingCtrl', ['$scope', '$http', 'location', function ($scope, $http, location) {
...
$scope.submit = function () {
...
$http.post('thing', thing).success(function (id) {
location.skipReload().path('/thing/' + id).replace();
});
};
}]);
рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред
+1
@sergey-buturlakin рдЖрдкрдХрд╛ $location.skipReload рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ! рдореИрдВ рдЗрд╕реЗ DoNotReloadCurrentTemplate рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ
@ рд╕рд░реНрдЧреЗрдИ-рдмреНрдпреВрдЯреБрд░рд▓рд╛рдХрд┐рди рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!
https://github.com/angular/angular.js/issues/1699#issuecomment -22511464 рд╕реЗ skipReload()
рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдЕрдХреНрд╖рдо рд░рдЦрддрд╛ рд╣реИ
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ un()
рдмрд╛рдж рдореЗрдВ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдпрд╣ рдХрд┐рд╕реА рднреА рдЕрдЧрд▓реЗ рдкреБрдирдГ рд▓реЛрдб рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ, рдФрд░ рдкрде рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрдм рдкрде рдкрд░рд┐рд╡рд░реНрддрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ - "рдЕрди" рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдЧреЗ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ
+1
+1
+1
рдкреАрдЖрд░ https://github.com/angular/angular.js/pull/2398 рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдмрд╕ рдореБрдЭреЗ рдПрдХ рд▓рд╛рдЗрди рдЫреЛрдбрд╝ рджреЛ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред
рдореИрдВ рд╕рд░реНрдЧреЗрдИ рдХреЗ рдШреЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ рдмреЗрдХрд╛рд░ (рдореЗрд░реЗ рдЕрдиреБрд╕рд╛рд░) "рдЕрди" рд╡реЗрд░рд┐рдПрдмрд▓ рдФрд░ рдХреЙрд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред
рдЗрд╕рд╕реЗ рдпрд╣ рд╣реЛрдЧрд╛:
angular.module('services.locationChanger', [])
.service('locationChanger', ['$location', '$route', '$rootScope', function ($location, $route, $rootScope) {
this.skipReload = function () {
var lastRoute = $route.current;
$rootScope.$on('$locationChangeSuccess', function () {
$route.current = lastRoute;
});
return this;
};
this.withoutRefresh = function (url, doesReplace) {
if(doesReplace){
$location.path(url).replace();
}
else {
$location.path(url || '/');
}
};
}]);
рдФрд░ рдХреЛрдИ рдлреЛрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛:
locationChanger.skipReload().withoutRefresh("/", true);
+1
+1
+1
+1
@ mica16 рдХреНрдпрд╛ un
рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЗрд╡реЗрдВрдЯ рдХреЛ рдЕрдирдмрд╛рдЗрдВрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрдирдмрд╛рдЗрдВрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП un
рдЪрд░ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд▓рдВрдХрд░ рдмрдирд╛рдП рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдШрдЯрдирд╛ рдмрд╛рд░-рдмрд╛рд░ рдлрд╛рдпрд░рд┐рдВрдЧ рдХрд░рддреА рд░рд╣рддреА рд╣реИ
рд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, un
рдЪрд░ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред
рдореВрд▓ рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕реЗ рдЙрдкрдпреЛрдЧреА рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛..рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдлреАрдЪрд░ рдХреЛ рдЯреНрд░реИрд╢ рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдФрд░ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИред
рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВ рдпрджрд┐ рдЖрдкрдХрд╛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)
рддреБрдо рд╕рд╣реА рд╣реЛ рджреЛрд╕реНрддреЛрдВ
рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдерд╛
app.factory 'location', ['$location', '$route', '$rootScope', '$timeout', ($location, $route, $rootScope, $timeout) ->
$location.skipReload = ->
lastRoute = $route.current
un = $rootScope.$on('$locationChangeSuccess', ->
$route.current = lastRoute
)
$timeout((->
un()
), 1000)
$location
$location
]
рдлрд┐рд░ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ
location.skipReload().path('/new/path').replace()
+1
+1
+1
+1
рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рд╕реНрдЯреЗрдк" рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдорд╛рд░реНрдЧ рдХреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рди рд╣реЛред рд╕реНрдерд╛рди:
setTimeout(function() {
window.location.hash = "";
if (typeof (history.pushState) !== "undefined") {
history.pushState("", document.title, location.pathname);
}
}, 0);
+1
+1
+1
+1
$anchorScroll рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореИрдВ рдиреЗрдЯ рдкрд░ рдШреВрдо рд░рд╣рд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдХрд░рдг рд╣реИрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: http://docs.angularjs.org/api/ngред $рдПрдВрдХрд░рд╕реНрдХреНрд░реЙрд▓
+1
рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ? рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдкрде рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред рдЙрдкрдпреЛрдЧ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдХреНрд▓реАрдирд░ рд▓рдЧрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕рд░реНрдЧреЗрдИ рдХреА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд┐рд░реНрдорд┐рдд $location.path рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрдврд╝рд╛рдпрд╛ред
App.run(['$route', '$rootScope', '$location', function ($route, $rootScope, $location) {
var original = $location.path;
$location.path = function (path, reload) {
if (reload === false) {
var lastRoute = $route.current;
var un = $rootScope.$on('$locationChangeSuccess', function () {
$route.current = lastRoute;
un();
});
}
return original.apply($location, [path]);
};
}])
рдЙрдкрдпреЛрдЧ:
$location.path('/my/path', false);
+1
@EvanWinstanley рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж!
+1
@ EvanWinstanley/рд╕рд░реНрдЧреЗрдИ рдХрд╛ рдлрд┐рдХреНрд╕ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рд░реНрдЧ рдмрджрд▓рддреЗ рд╕рдордп, рд╕рдВрдХрд▓реНрдкреЛрдВ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ $ location.path рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрдХрд▓реНрдк/рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдП рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЪрдпрди рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХрд╛рдзрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЕрдЪреНрдЫреЗ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд▓рд┐рдП $ рд╕реНрдерд╛рди.рдкрде рднреА рдмрджрд▓рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рддреЛ API рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреИрд╢ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рднреА, рдпрд╣ рд╣рдореЗрд╢рд╛ рдлрд┐рд░ рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрд╢ рдХрд┐рдП рдЧрдП рд╣реИрдВред
+1
@ рд╕рд░реНрдЧреЗрдИ-рдмреНрдпреВрдЯреБрд░рд▓рд╛рдХрд┐рди рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА reslove рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
+1
@EvanWinstanley рдХрд╛ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░ @ mica16 рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛... (рдкрд┐рдЫрд▓рд╛ рдмрдЯрди рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)ред рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА :(ред
+1
+1
+1
+1
рдХреГрдкрдпрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ: $location.reload();
@jvmvik рдХреНрдпрд╛ рдЖрдкрдиреЗ $route.current.reload()
рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?
7.1.1
рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рдмрд╛рдж рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрдмрд░ рдирд╣реАрдВ?
+1
+1
рдореИрдВрдиреЗ рд╕рд░реНрдЧреЗрдИ рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
рдЕрдм рдпрд╣ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдЯреИрдм рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдпреВрдЖрд░рдПрд▓ (рдЯреИрдм рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛)ред
// Original: https://github.com/angular/angular.js/issues/1699#issuecomment-22511464
//
// Usage:
//
// (interception is needed for Back/Forward buttons to work)
//
// location.intercept($scope._url_pattern, function(matched) {
// // can return false to abort interception
// var type = matched[1]
// if (!type) {
// return;
// }
// $scope.safeApply(function() {
// $scope.data_type = type;
// $scope.params.page = 1;
// $scope.get_data();
// });
// });
//
// anywhere in your controller:
// location.skipReload().path(url);
//
// to replace in history stack:
// location.skipReload().path(url).replace();
app.factory('location', [
'$location',
'$route',
'$rootScope',
function ($location, $route, $rootScope) {
var page_route = $route.current;
$location.skipReload = function () {
//var lastRoute = $route.current;
var unbind = $rootScope.$on('$locationChangeSuccess', function () {
$route.current = page_route;
unbind();
});
return $location;
};
if ($location.intercept) {
throw '$location.intercept is already defined';
}
$location.intercept = function(url_pattern, load_url) {
function parse_path() {
var match = $location.path().match(url_pattern)
if (match) {
match.shift();
return match;
}
}
var unbind = $rootScope.$on("$locationChangeSuccess", function() {
var matched = parse_path();
if (!matched || load_url(matched) === false) {
return unbind();
}
$route.current = page_route;
});
};
return $location;
}
]);
+1
+1
$ рд╕реНрдерд╛рди рдкрде рдмрджрд▓рддреЗ рд╕рдордп рд░реВрдЯ рд░реАрд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди, рдирдП рд╕реНрдерд╛рди рдкрде рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧ рдкрде рдкреИрд░рд╛рдо рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред
рдореЗрд░реЗ $routeProvider рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ /рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдорд╛рд░реНрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ
when('/tasks/:section/:taskId?', {
templateUrl: 'partials/tasks.html',
controller: 'TaskCtrl',
reloadOnSearch: false
})
рдЙрдкрд░реЛрдХреНрдд рдорд╛рд░реНрдЧ рдореЗрдВ рджреЛ рдкрдердкрд░рдо рдЕрдиреБрднрд╛рдЧ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдп рдЖрдИрдбреА (рдХрд╛рд░реНрдп рдЖрдИрдбреА рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ) рдФрд░ рдкреБрдирдГ рд▓реЛрдбрдСрдирд╕рд░реНрдЪ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рд╣реИред
рдорд╛рд░реНрдЧ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ / рдХрд╛рд░реНрдпреЛрдВ / рдЗрдирдмреЙрдХреНрд╕ рд╕реЗ / рдХрд╛рд░реНрдпреЛрдВ / рдЗрдирдмреЙрдХреНрд╕ / 122 рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ $ рд╕реНрдерд╛рди рдкрде рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдЖрдИрдбреА рдкрдердкрд░рдо рд╕реЗрдЯ рдХрд░реЗрдВ
$scope.showTask = function(task) {
// set taskId to prevent route reloading
$route.current.pathParams ['taskId'] = task.id;
$location.path('/tasks/'+$route.current.pathParams ['section']+'/'+task.id);
};
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЦрдВрдб рдкрдердкрд░рдо рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЬрдм рдорд╛рд░реНрдЧ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдирдП $ рд╕реНрдерд╛рди рдкрде рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдкрдердкрд░рдо рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧ рдкрдердкрд╛рд░реНрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ (рдФрд░ рдкреБрдирдГ рд▓реЛрдбрдСрдирд╕рд░реНрдЪ рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рддреЛ рдпрд╣ рдорд╛рд░реНрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ $routeUpdate рдШрдЯрдирд╛ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдорд╛рд░реНрдЧ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛/рдХрд╛рд░реНрдп/рдЗрдирдмреЙрдХреНрд╕/122 рд╕реЗ/рдХрд╛рд░реНрдп/рдЗрдирдмреЙрдХреНрд╕ рдореЗрдВ рд╡рд╛рдкрд╕ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ $ рд╕реНрдерд╛рди рдкрде рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдЖрдИрдбреА рдкрдердкрд░рдо рд╣рдЯрд╛рдПрдВ
$scope.back = function () {
// delete taskId to prevent route reloading
delete $route.current.pathParams ['taskId'];
$location.path('/tasks/'+$route.current.pathParams ['section']);
};
+1
+:100:
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдмреИрдХрдмреЛрди рд░рд╛рдЙрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрд░рд┐рдХ рдмреЗрд▓реА рд▓реЗрдЦ рдкрдврд╝рд╛ http://lostechies.com/derickbailey/2011/08/28/dont-execute-a-backbone-js-route-handler-from-your-code/ ? рдмреИрдХрдмреЛрди рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрд░рд┐рдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреБрдирдГ рд▓реЛрдб рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреЛ рдХрд┐ рдХреЛрдгреАрдп рдХреЗ рд░рд╛рдЙрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд рд▓рдЧрддрд╛ рд╣реИ)ред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдкрд░ 48 "+1" рд╣реИрдВ ... рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпреЗ рд╕рднреА рд▓реЛрдЧ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖ рд░рд╣рд╛ рд╣реИ var lastRoute = $route.current;
рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдмрд╣рд╛рд▓ $locationChangeSuccess
рдХреЗ рд╕рд╛рде $route.current = lastRoute;
рд╕реБрдВрджрд░ hacky рд▓рдЧрддрд╛ рд╣реИред
@IgorMinar рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ?
рдареАрдХ рд╣реИ, рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реВрдВ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЕрдВрдд рдореЗрдВ рдмрдВрдж рдХрд░ рд╕рдХреЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЪреАрдЬрд╝реЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ #hash рдорд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдорд╛рд░реНрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
website.com/#/my-route#top
website.com/#/my-route#bottom
рддреЛ рдЬрдм рд╢реАрд░реНрд╖ рдиреАрдЪреЗ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдкреБрдирдГ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрджрд┐ рдореЗрд░рд╛ рдорд╛рд░реНрдЧ рдорд╛рди рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рд╣рдо рд╕рдм рдЗрд╕ рдкрд░ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?
рджреВрд╕рд░рд╛, рдЬреЛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд╣рдореЗрдВ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдорд╛рд░реНрдЧ рдкрде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдкреБрдирдГ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдорд╛рд░реНрдЧ рдХрд╛ рдПрдХ рдкреБрд░рд╛рдирд╛ рдЯреБрдХрдбрд╝рд╛ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдХреНрдпреЛрдВ рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░реВрдЯ рдкрд░рдо рдХреЗ рд▓рд┐рдП рджреЛ ::
рдХреЛрд▓рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕рдВрдХреЗрддрди рд╣реИ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдорд╛рди рдХреА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
// this will reload the page when the id changes like normal
$routeProvider.register('/users/:id')
// this will reload the page when the id changes, but not the section (since two colons are used)
$routeProvider.register('/users/:id/::section')
рддреБрдо рд▓реЛрдЧ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдк рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
/users/new
рдкреНрд░рддрд┐
/users/123
рдПрдХ рдмрд╛рд░ рдЬрдм рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдЖрдИрдбреА рдЕрд╕рд╛рдЗрди рдХреА рдЧрдИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд┐рд╕реА рдХреЛ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрдИрдбреА 123 рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдореИрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рд╣реИ?
рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ рдПрдореНрдмрд░ рд░рд╛рдЙрдЯрд░ рдпрд╛ рддреЛ рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд┐рдирд╛ рдмрджрд▓рддреЗ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
http://stackoverflow.com/questions/19076834/change-url-without-transition
@matsko рдХреНрдпрд╛ рд╣рдо рд╕рд┐рд░реНрдл рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЛ рд╕рд╢рдХреНрдд
рдореИрдВ рдЕрдЪреНрдЫреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВред
рдПрдХ рддрд░реАрдХрд╛ рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рдЗрдВрдЬреАрдирд┐рдпрд░ рд░реАрд▓реЛрдб рдЗрд╡реЗрдВрдЯ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рдпреВрдЖрд░рдПрд▓ рдмрджрд▓ рд╕рдХреЗред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ (рдЙрджрд╛: {рд░реАрд▓реЛрдб: рдЭреВрдард╛}) ".path()", ".search ()", рдЖрджрд┐ рдкрд░ред
@ChrisCinelli рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдорд╛рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рджреЛ
@matsko рддреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдХреНрдпрд╛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рдЪреЗрд░реА-рдкрд┐рдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВ? рдФрд░ рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдорди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдпрд╛ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдПрдХ рд░реЛрдбрд╝рд╛ рдорд╛рд░ рд░рд╣реЗ рд╣реИрдВ?
@cgross рдЪреЗрд░реА-рд╣рд╛рдВ рдЪреБрдиреЗрдВ (рдбрдмрд▓ рдХреЛрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рднреА рдареЛрд╕ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдпрд╣ рдХреЛрдгреАрдп 2.0 рдХреА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрдирд▓рд╛рдЗрди рд╣реИ рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рдРрд╕рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ 2.0 рд╣реЛрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдбрд╛рд░реНрдЯ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ (рдПрдкреАрдЖрдИ рдХреЛ рд╕реБрд╕рдВрдЧрдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП)ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╣реЛрдЧрд╛, рдФрд░ рдорд╛рд░реНрдЧ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ (рдХрдо рд╕реЗ рдХрдо рдЖрдИрдПрдордУ)ред
$routeProvider,when("/:categoryName/:id[reload=no]", { ... })
рдФрд░ рдлрд┐рд░, рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ
$scope.$on("$routeChangeSuccess", function () {
if ($routeParams.id !== $scope.activeId) {
// React to ID update without reload
}
});
рд╣рд╛рдБ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди :id[reload=no]
рдмрдЬрд╛рдп рдбрдмрд▓ рдХреЛрд▓рди '::id' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдореИрдВ рд╢рд╛рдпрдж рдЕрдВрддрддрдГ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╕реБрдВрджрд░ URL рд╣рдордореЗрдВ рд╕реЗ рдмрд╣реБрддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рд╣реИрдВред
рдбрдмрд▓ рдХреЛрд▓рди рдХреЗ рд▓рд┐рдП рдорддреНрд╕рдХреЛ +1, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде() рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛
рдбрдмрд▓ рдХреЛрд▓рди рдХреЗ рд▓рд┐рдП +1
@matsko рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреЛрдгреАрдп 2.0 рдХреЗ рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ ng1.x рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдирдП рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдПрдХ navigate
рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ _url_ рдФрд░ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ _options_ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмреИрдХрдмреЛрди рд░рд╛рдЙрдЯрд░ рдХреА рдЗрддрд┐рд╣рд╛рд╕ рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ replace
рдФрд░ trigger
рдпрджрд┐ рдЖрдк /users/new
рд╕реЗ /users/123
рдмрд┐рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╕реНрдХреНрд░реАрди рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рдХрд╛рд░рдг, рдЖрдк рдХреЗрд╡рд▓ trigger:false
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдпрд╣ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ /users/new
рдЗрддрд┐рд╣рд╛рд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдирдП рдЖрдИрдбреА-рдЖрдзрд╛рд░рд┐рдд url рд╕реЗ рдмрджрд▓ рджреЗ, рддреЛ рдЖрдкрдХреЛ replace:true
рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдХрд┐рд╕реА _new_ рд░реВрдЯ рд╕реЗ _id-рдЖрдзрд╛рд░рд┐рдд_ рд░реВрдЯ рдореЗрдВ рдмрд┐рдирд╛ DOM рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХрд┐рдП рд░реВрдЯ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЖрджрд┐ рдЗрд╕ API рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рд╣реИред рдПрдХ рдФрд░ рдЖрдо рдЙрджрд╛рд╣рд░рдг рдкреЗрдЬрд┐рдиреЗрд╢рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЧреНрд░рд┐рдб рд╣реИ рдФрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЗрдЬ рдХрд░реЗ, рддреЛ рдЖрдк рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЗ рд╡рд╣реА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрдкрдиреЗ рдкрд░рд╛рдорд░реНрд╢ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рджреЗрдЦрд╛ рд╣реИред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдорджрдж рдХрд░рддреА рд╣реИред рд╢рд╛рдпрдж 1.x рд░рд╛рдЙрдЯрд░ рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдЕрдкрдирд╛ рд╕рдХрддрд╛ рд╣реИ?
@EisenbergEffect рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред 1.x рдХреЗ рд▓рд┐рдП, рдкрде рдмрджрд▓реЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
$location.path(value, { trigger : false })
рдФрд░ рдпрд╣ рдирдП рдорд╛рд░реНрдЧ + рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЬрд╛рдЧрд░реВрдХ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкрде рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдбрдмрд▓ ::
рдХреЛрд▓рди рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ?
рдпрд╣рд╛рдВ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдпреВрдЖрд░рдПрд▓ рдмрджрд▓рдиреЗ рдкрд░ (рдорд╛рд░реНрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛) рдпреВрдЖрд░рдПрд▓ рдмрджрд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдпреВрдЖрд░рдПрд▓ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рд╕рддреНрдп рдХрд╛ рдПрдХ рдХреЗрдВрджреНрд░реАрдп рд╕реНрд░реЛрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рдПрдХ рд╕реЗрд╡рд╛ рдЬреЛ
рдорд╛рд░реНрдЧ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рд╕рдВрджрд░реНрднрд┐рдд рдФрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдПрдХрд▓ рд░рд╣рддрд╛ рд╣реИ
рд╕рддреНрдп
рдЬреБрд▓рд╛ 1, 2014 11:28 pm рдкрд░, "рдордЯреАрд╕ Niemel├д" [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:
рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @EisenbergEffect https://github.com/EisenbergEffect ред рдХреЗ рд▓рд┐рдпреЗ
1.x, рдкрде рдмрджрд▓реЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:$ рд╕реНрдерд╛рдиред рдкрде (рдорд╛рди, {рдЯреНрд░рд┐рдЧрд░: рдЭреВрдард╛})
рдФрд░ рдпрд╣ рдирдП рдорд╛рд░реНрдЧ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкрде рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛
- рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХред рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ
рдбрдмрд▓ :: рдХреЛрд▓рди рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ?рдпрд╣рд╛рдВ рдЕрдиреНрдп рд╕рднреА рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп URL рдмрджрд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ (рдмрд┐рдирд╛
рдорд╛рд░реНрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛) рдорд╛рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЧрдо рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпреВрдЖрд░рдПрд▓ рдХрдм рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ?-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/angular/angular.js/issues/1699#issuecomment -47741350ред
рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИ... рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рджреЛ рдирдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдЬреИрд╕реЗ entering(transitionInfo)
рдФрд░ leaving(transitionInfo)
рдпрд╛ рдХреБрдЫ рдФрд░ред рдпрджрд┐ рд╡реЗ рдореМрдЬреВрдж рд╣реИрдВ рддреЛ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреБрд░рд╛рдиреЗ рдорд╛рд░реНрдЧ рдкрд░ leaving
рдкрджреНрдзрддрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рдирдП рдорд╛рд░реНрдЧ рдкрд░ entering()
рдкрджреНрдзрддрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред transitionInfo
рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реЛрдЧреА рдЬреЛ рдирд┐рдореНрди рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
{
newUrl: ...
newRoute: ...
oldUrl: ...
oldRoute: ...
cancelRouteChange: false,
ignoreRouteChange: false
}
рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рд╣рдо рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдорд╛рд░реНрдЧреЛрдВ/рдпреВрдЖрд░рдПрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпреВрдЖрд░рдПрд▓ рдмрджрд▓ рдЬрд╛рдП рд▓реЗрдХрд┐рди рдорд╛рд░реНрдЧ рд╕рдВрдХреНрд░рдордг рдХреЛ рдлрд┐рд░ рд╕реЗ рди рдЪрд▓рд╛рдП рддреЛ рдЖрдк ignoreRouteChange
рд╕реЗ true
ред рдпрджрд┐ рдЖрдк рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдкрд┐рдЫрд▓реЗ рдорд╛рд░реНрдЧ рдкрд░ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдиреЗ cancelRouteChange
рдХреЛ рд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣ рддрдм рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИ, рдпрджрд┐ рдпреВрдЖрд░рдПрд▓ рдХреЛ рд╕реАрдзреЗ рдкрддрд╛ рдмрд╛рд░ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рд░реНрдЧреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдХрд░реАрдм рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред .
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ AngularV2 рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╣реИ рдЬрд┐рд╕реЗ activate()
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред @EisenbergEffect рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?
@matsko рд╣рд╛рдБ, рд╡рд╣ рдПрдкреАрдЖрдИ рдРрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рдЖрдк replace
рд╡рд┐рдХрд▓реНрдк рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рд╣реЛрддреА рд╣реИред /users/new
рд╕реЗ /users/123
рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ /users/new
рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрдиреЗ рдХреЗ рдмрд╛рдж рдмреИрдХ рд╕реНрдЯреИрдХ рдореЗрдВ рд░рд╣реЗред рдмрдирд╛рдпрд╛ рдерд╛ред
::
рд╕рдВрдмрдВрдз рдореЗрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐, рдКрдкрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ url рдкреИрдЯрд░реНрди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк customers
рд╕реЗ users/123
рд╕рдВрдХреНрд░рдордг рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдпрджрд┐ рдЖрдк users/new
рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ users/456
рддреЛ рдЖрдк рднреА рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдЬрдм рдЖрдк users/new
рдФрд░ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрдХреНрд░рдордг рдХреЗ рдирдП рдмрдирд╛рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрдИрдбреА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЙрд╕ рд╕рдордп рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИред
@petebacondarwin рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рд░реНрдЧ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рднрддреНрддреЗ рдХрд╛ рдЬреНрдЮрд╛рди рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдорд╛рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рднреАрддрд░ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдмрд╕ рдирдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реАрди рд╕реЗ рдкреВрд░реНрд╡-рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдХ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЙрд╕ рдХреЙрд▓рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рджреЗрдирд╛ рд╣реИ рдЬреЛ рдорд╛рд░реНрдЧ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ replace
рдФрд░ trigger
рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред
@EisenbergEffect - рдЖрдк рд╕рд╣реА рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рддреБрд░рдВрдд рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реВрдВрдЧрд╛:
currentUser
рдирд╛рдордХ рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЗрд╕реЗ рдЖрдо рддреМрд░ рдкрд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реВрдВред рдпрджрд┐ рдпрд╣ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕currentEntity
, рдЬреЛ рдХрд┐ рд╡рд░реНрддрдорд╛рди "рдЪреАрдЬ" рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рдВрдкрд╛рджрд┐рдд/рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВредрдлрд┐рд░ рдорд╛рд░реНрдЧ
enter()
рд╡рд┐рдзрд┐ рдЗрд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреА рдФрд░ рдпрд╣ рддрдп рдХрд░реЗрдЧреА рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдорд╛рд░реНрдЧ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЗрдХрд╛рдИ рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ рдЙрдард╛рддреЗ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдмрд╕ URL рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
рдореИрдВ рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝реЗ рдРрдк рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмреЛрдЭрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╣рд╛рдВ рдлреЗрдВрдХ рджреВрдВрдЧрд╛ред
рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ (рдЕрд░реНрдерд╛рдд рдорд╛рд░реНрдЧ/рдпреВрдЖрд░рдПрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╡рд╛рд▓рд╛) рджреЗрдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреНрдпрд╛ рддрд░реНрдХ рд╣реИрдВ рдХрд┐ рдорд╛рд░реНрдЧ рд╕рдВрдХреНрд░рдордг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ? рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ @IgorMinar рдЪрд┐рдВрддрд┐рдд рдерд╛ рдХрд┐ рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереАред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рд╡рд╣рд╛рдВ рдкрд╣реБрдВрдЪреЗред
@petebacondarwin рдЬреЛ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП
рд░рд╛рдЬреНрдп рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдпреВрдЖрд░рдПрд▓ рд╣реИрдВ рдЬреЛ рдПрдХ рд╣реА рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ .... рд▓реЗрдХрд┐рди рдЕрдВрддрд░ рдореЙрдбрд▓ рдореЗрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд╡рд╕реНрдерд╛рдПрдБ рд╣реИрдВ....рд▓реЗрдХрд┐рди UX рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╣рдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЭрдЯрдХрд╛ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рдкреВрд░реНрдг рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ, рд╣рдо рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдбреЛрдо рдХреЛ рдлреЗрдВрдХрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рдмрдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ => рд╕рд╣реЗрдЬреЗ рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдХреНрд░рдордг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░рд┐рдВрдЧ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдХреЛ рднреА рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдмреИрдХ рдмрдЯрди _not_ рдЖрдкрдХреЛ рдирдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рдПред рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ, рд░рд╛рдЙрдЯрд░ рдпрд╛ рд╕реНрдерд╛рди рддрдВрддреНрд░ рдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЯреБрдХрдбрд╝рд╛ рдХреНрдпрд╛ рд╣реИред (рдореИрдВ рд╡рд╣рд╛рдВ рдПрдХ рдзрд╛рд░рдгрд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ ng1.x рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред 2.x рдХреЗ рд╕рд╛рде рд╣рдо рд╡рд░реНрддрдорд╛рди/рдкрд┐рдЫрд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реЛред) рдореЗрдВ рдкреЗрдЬрд┐рдиреЗрд╢рди рдкрд░рд┐рджреГрд╢реНрдп, рд╣рдо рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдпреВрдПрдХреНрд╕ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЛрдо рдирд┐рдкрдЯрд╛рди рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдкрд┐рдЫрд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрди рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ url рдФрд░ рдРрдк рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЙрд╕ рдирдП рд░рд╛рдЬреНрдп рдореЗрдВ рдХреИрд╕реЗ рд╕рдВрдХреНрд░рдордг рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реАрдзреЗ рдирдП рджреГрд╢реНрдп рд╕реЗ рдбреАрдк рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдЬрдм рдЖрдк рдЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реЛрдВред
+1
+1
+1
+1
рдФрд░ рдмрд┐рдирд╛ рд░реВрдЯ рдмрджрд▓реЗ рдпреВрдЖрд░рдПрд▓ рдмрджрд▓рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рднреА рд╣реИ
+1 - рдпрд╣ рджреЗрдЦрдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рдпрд╣ рдЪрд╛рд╣рддрд╛ рд╣реИ!
+1, рдЕрднреА рддрдХ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ (
+1
+1
+1
+1
+1
+1
+1
:+1:
рдЖрдк рднреА @basarat? :рдореБрд╕реНрдХреБрд░рд╛рдУ:
@johnnyreilly рдХреЗ рдкрд╛рд╕ рдмрд╕ рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк $route
рдФрд░ $location
рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
/** navigate */
public navigate(url: string, reload = true) {
this.$location.url(url);
// Don't do a controller reload on this navigation. Note: *you* need to be careful not to actually *need* a controller reload
if (!reload) {
var lastRoute = this.$route.current;
var unsub = this.$rootScope.$on('$locationChangeSuccess', () => {
this.$route.current = lastRoute; // fake this to make the route logic think nothing changed
unsub();
});
}
}
рдЕрдЪреНрдЫрд╛ @рдмрд╕рд░рдд!
+1
+1
рдПрдХ рдмрд╛рдд рдЬреЛ рдореИрдВ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд░рд╛рдЙрдЯрд░ рд╕рдорд╛рдзрд╛рди рдмреНрд▓реЙрдХ рдЕрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рдХрд┐рд╕реА рдФрд░ рдиреЗ рдЗрд╕реЗ рдиреЛрдЯрд┐рд╕ рдХрд┐рдпрд╛? $route.current рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреБрдЫ рдкрд╛рд╕ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИрдХреА рд▓рдЧрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрднреА рдареАрдХ рдирд╣реАрдВ рд╣реЛрдЧреА? :рд░реЛрдирд╛:
+1
+1
рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд╛рдкрд╕ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ... рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдм рддрдХ рд╣реИ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ)ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП 100% рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА рдЕрдкрдирд╛ resolve
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдмреИрдХ/рдлреЙрд░рд╡рд░реНрдб рдмрдЯрди рдЕрдм рдЯреВрдЯрд╛ рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
#
# Special $location.path function that allows you to change the url, but not
# send things through the router.
# <strong i="7">@see</strong> https://github.com/angular/angular.js/issues/1699
#
@app.run(['$rootScope', '$location', '$route', '$timeout', ($rootScope, $location, $route, $timeout) ->
originalPath = $location.path
$location.path = (url, reload=true) ->
if ! reload
lastRoute = $route.current
if lastRoute
unsub = $rootScope.$on('$locationChangeSuccess', ->
$route.current = lastRoute # fake this to make the route logic think nothing changed
$route.current.ignore = true
unsub()
)
# make sure to clean up and unregister the unsub function
$timeout( ->
unsub()
, 500)
originalPath.apply($location, [url])
])
@lookfirst рдЖрдк unsub
рджреЛ рдмрд╛рд░ рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкрд╕рдВрдж рдХрд░реЗрдВ: https://github.com/angular/angular.js/issues/1699#issuecomment -54931571
@basarat shrug ... рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓ рд░рд╣рд╛ рдерд╛ рдХрд┐ unsub() рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдирд╕рдм рдлрдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдЧрд╛рд░реНрдб рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред
unsubbed = false
unsub = ... ->
if ! unsubbed
...
unsubbed = true
unsub()
$timeout(unsub, 500)
рднрд▓реЗ рд╣реА, рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреБрд▓ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред рдпрд╣ рд╣рд░ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдХреЛрдгреАрдп рд╕реНрд╡реАрдХреГрдд рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ unsub() рдХреЛ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛
@lookfirst рдЖрдк location.path
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдореИрдВ location.url
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрд╕рд░ рд╣реЛред
рдмрд╕ рдирд╛рдЗрдЯрдкрд┐рдХрд┐рдВрдЧ (рдореБрдЭреЗ рдорджрджрдЧрд╛рд░ рдмрдирдирд╛ рдкрд╕рдВрдж рд╣реИ): originalPath.apply($location, [url])
рдмрдЬрд╛рдп рдЖрдк originalPath.call($location, url)
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ)
рджрд┐рд▓рдЪрд╕реНрдк... location.url рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдмреИрдХ рдмрдЯрди рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!), рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдЬрдм рдореИрдВ рд╕реАрдзреЗ 10 рдШрдВрдЯреЗ рддрдХ рдХреЛрдбрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЦреБрджрд╛рдИ рдХрд░рдиреА рд╣реЛрдЧреАред рд╕рдВрдХреЗрдд рдФрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ!
+1
+1
+1
@kuchumovn рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдореБрдЭреЗ рдорд┐рд▓реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрде рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж $routeParams
рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ $routeParams
рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
app.factory('Location', [
'$location',
'$route',
'$rootScope',
'$routeParams',
function ($location, $route, $rootScope, $routeParams) {
var page_route = $route.current;
$location.skipReload = function () {
//var lastRoute = $route.current;
var unbind = $rootScope.$on('$locationChangeSuccess', function () {
angular.copy($route.current.params, $routeParams);
$route.current = page_route;
unbind();
});
return $location;
};
if ($location.intercept) {
throw '$location.intercept is already defined';
}
$location.intercept = function(url_pattern, load_url) {
function parse_path() {
var match = $location.path().match(url_pattern);
if (match) {
match.shift();
return match;
}
}
var unbind = $rootScope.$on("$locationChangeSuccess", function() {
var matched = parse_path();
if (!matched || load_url(matched) === false) {
return unbind();
}
angular.copy($route.current.params, $routeParams);
$route.current = page_route;
});
};
return $location;
}
]);
+1
+1
рдореИрдВрдиреЗ рдХрд▓ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ @IgorMinar рд╕реЗ рдмрд╛рдд рдХреА ... рд╡рд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЛрдгреАрдп 2.0 рдореЗрдВ рд░рд╛рдЙрдЯрд░ рд╣реИ, рдЬреЛ рдЬрд▓реНрдж рд╣реА 1.3 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ...
рдЖрдк рд╕рд┐рд░реНрдл ui- рд░рд╛рдЙрдЯрд░ рдХреЛ рдХреЛрдгреАрдп рдореЗрдВ рдХреНрдпреЛрдВ рдорд░реНрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреВрдпреВрдЖрдИ рд░рд╛рдЙрдЯрд░ рдХреБрдЫ рднреА рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
@elennaro рд╕реЗ рд╕рд╣рдордд рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░ рдХреБрдЫ рд░рдЪрдирд╛рддреНрдордХрддрд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЪрд╛рд▓ рдЪрд▓рддрд╛ рд╣реИред рдЬрд┐рдЬреНрдЮрд╛рд╕реБ: рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдФрд░ рдЙрд╕ рдкрд░ Google рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рд╣реИрдВ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рд╕рдВрдХрд▓реНрдк рдкрд░ рдЕрдорд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
+1
+1
$location.path(value, { trigger : false })
рд▓рд┐рдП +1
рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐?
+1
+1
+1 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдкрде() рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдФрд░ рдХреЗрд╡рд▓ $ location.hash рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдирд╛ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдХ рд░реАрд▓реЛрдб рдХреЗ рдмрд┐рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдмреИрдХ-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рдореГрджреНрдз рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рд╡реИрдз рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред
+1
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рдкреГрд╖реНрда рдореЗрдВ рдпрд╣рд╛рдВ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: http://joelsaupe.com/programming/angularjs-change-path-without-reloading/
+1
+1
+1
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдПрдХ рдкреВрд░реНрдг рдпреВрдЖрд░рдПрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд▓ рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝рдирд╛ рдерд╛ред
$stateProvider.state('state.child', {
url: '^/some-other-url'
});
рдлрд┐рд░ рдмрд╕ $state.go('.child') рдХрд░реЗрдВ рдФрд░ рдЙрд╕реЗ url рдХреЛ рдЙрд╕ рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЖрдк рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдХреЛ рдЦреБрд╢ рд░рдЦреЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреИрд░реЗрдЯ, рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпреВрдЖрд░рдПрд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ .. рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рд▓рдЧ рдЧрдИред
+1
+1
+1
+1
+1
+1
+1
@btford componentRouter
рдореЗрдВ рдЗрд╕рд╕реЗ (рдпрджрд┐ рдмрд┐рд▓реНрдХреБрд▓ рднреА) рдХреИрд╕реЗ рдирд┐рдкрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдПрдХ рд╕рд░рд▓, рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @balsarori ред
рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ $route
рдкрде рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдКрдкрд░ рд╡рд┐рд╕реНрддреГрддред
рдпрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ console.log
рдХреЗ рдмрдЬрд╛рдп $log
рд╣рдо рдмрд╕ рд╕рдм рд▓реЙрдЧ рдкрдЯреНрдЯреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрд╛рджрди uglifyjs рд╕рд╛рде рдмрдирд╛рддрд╛ рд╣реИ рдХреЗ рд▓рд┐рдПред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдареАрдХ
/**
* parameter handling
*/
'use strict';
angular.module('route-params', [
'ng',
'ngRoute',
])
.service('routeParams', function(
$route,
$location
) {
var R = {};
/**
* <strong i="15">@ngdoc</strong> method
* <strong i="16">@name</strong> routeParams#replace
*
* <strong i="17">@description</strong>
* Replace route params, including path params, without reloading controller.
*
* Causes `$route` service to update the current URL, replacing
* current route parameters with those specified in `params`.
*
* Provided property names that match the route's path segment
* definitions will be interpolated into the location's path, while
* remaining properties will be treated as query params.
*
* If `options.reload` is truthy, the current controller is reloaded.
*
* If `options.history` is truthy, the browser history is updated.
* If `options.history` is undefined, the browser history is only updated
* when changing value of any existing `$route` parameter,
* ie. not when adding a previously undefined `$route` parameter.
*
* <strong i="18">@param</strong> {!Object<string, string>} params mapping of URL parameter names to values
* <strong i="19">@param</strong> {!Object<string, boolean>} options `history` and `reload` options.
*
* <strong i="20">@returns</strong> {Object} self
*/
R.replace = function(params, options) {
var key, value, updateRequired;
options = options || {};
// Convert params to strings, and check if they differ from current route params.
// If `options.history` is undefined, and passed params update any current route params, then set it to true.
var currentParams = $route.current.params;
console.log('route: params: replace', {last: angular.copy(currentParams), next: params,
route: $route.current, options: options});
if (!$route.current.$$route) {
// Can't change location.
return;
}
var currentPath = $route.current.$$route.originalPath;
var history = options.history;
for (key in params) {
// jshint eqnull: true
value = params[key] = (params[key] == null ? undefined : params[key] + '');
if (value !== currentParams[key]) {
updateRequired = true;
console.log('route: params: replace: ' + (currentPath.search(':\\b' + key + '\\b') ? 'path.' : 'search.') +
key + ' = ' + (key in $route.current.params ? $route.current.params[key] + ' -> ' : '') + params[key]);
if (history === undefined && key in currentParams) {
console.log('route: params: replace: update history: ' + key + ' = ' + currentParams[key] + ' -> ' + value);
history = true;
}
}
}
if (updateRequired) {
// If `options.reload` is falsey, then set current route `reloadOnSearch` to false,
// and make passed path params equal with current route path params,
// so that `$route` treats the change as update only, and does not broadcast `$routeChangeStart` event.
//
// See https://github.com/angular/angular.js/issues/1699#issuecomment-45048054
// and https://github.com/angular/angular.js/tree/v1.3.x/src/ngRoute/route.js#L484
// and https://github.com/angular/angular.js/tree/v1.3.x/src/ngRoute/route.js#L539
if (!options.reload) {
// Set current route `reloadOnSearch` to false.
$route.current.$$route.reloadOnSearch = false;
// Add any passed path params to current route path params, and convert them to strings.
// Path params are detected by searching for respective name group `:key[*?]` in current route path.
for (key in params) {
if (currentPath.search(':\\b' + key + '\\b') !== -1) {
$route.current.pathParams[key] = params[key];
}
}
// Add any current route path params to passed params, if not set there already.
for (key in $route.current.pathParams) {
if (!(key in params)) {
params[key] = $route.current.pathParams[key];
}
}
// TODO: push state if `options.history` is truthy.
}
// If `options.history` is falsey, and controller is reloaded,
// then make `$location` replace current history state, instead of pushing a new one.
else if (!history) {
$location.replace();
}
$route.updateParams(params);
// Update current route params, so the change is reflected immediatelly,
// and nearby replace() call work correctly.
for (key in params) {
$route.current.params[key] = params[key];
}
}
return R;
};
return R;
});
рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдирдП рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛? 1.4 рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рд╕рдордп рдкрд░? рдЬрд▓реНрдж рд╣реА?
рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рдеред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рддреЗ рд╕рдордп рдкреБрдирдГ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ reloadOnSearch
рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП! :)
рдзрдиреНрдпрд╡рд╛рдж!
@marcalj fwiw, рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рд╣реИрдХ рдХрд┐рдпрд╛ рдЬрд┐рд╕рдиреЗ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХ рдореЗрдВ рд░рдЦрд╛ рддрд╛рдХрд┐ рд╣рдо reloadOnSearch
рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред рд╕рд╛рде рд╣реА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпреВрдЖрд░рдПрд▓ рдХреЛ рд╕реАрдзреЗ рдмреБрдХрдорд╛рд░реНрдХ рдпрд╛ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдирдЬреА-рд░рд╛рдЙрдЯрд░ рдпрд╛ рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде? рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдХреЛрдб рдпрд╛ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдирдП рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрднреА рддрдХ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж!
@marcalj рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рд╕рдВрднрд╡рдд: рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди https://github.com/irthos/mngr/blob/master/app.js рджреЗрдЦреЗрдВ рдФрд░ рд▓рд╛рдЗрди 10 рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдпрд╣ рд╣рдорд╛рд░реА api.loadState рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреИрд░рд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ url рдЙрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
NgSilent рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдерд╛ред
рджреЗрдЦреЗрдВ https://github.com/garakh/ngSilent
ngRoute 1.3.15 . рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛
рдореИрдВрдиреЗ @ рд╕рд░реНрдЧреЗрдИ-рдмреНрдпреВрдЯреБрд░рд▓рд╛рдХрд┐рди рдФрд░ @kuchumovn рд╕рдорд╛рдзрд╛рди рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдкрд░ рдЪрд▓рддрд╛ рд╣реВрдВред
рдкреНрд░рд╢реНрди рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдкрд░ (рдкреЗрдЬрдПрдХреНрд╕) рдореИрдВ рд╕реНрдерд╛рди.рд╕реНрдХрд┐рдк рд░реАрд▓реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдореИрдВ рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд┐рдирд╛ рдкрде рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрджрд┐ рдореИрдВ рдкреЗрдЬрдПрдХреНрд╕ рд╕реЗ рдирдП рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдорд╛рд░реНрдЧ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ $ рд╕реНрдерд╛рди.рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдкреЗрдЬрдПрдХреНрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХ рдмрдЯрди рджрдмрд╛рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреГрд╖реНрда рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЕрдм рдФрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд░реАрдлрд╝реНрд░реЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдм рдореЗрд░рд╛ рдорд╛рд░реНрдЧ рдмрджрд▓реЗрдВред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ?
+1
+1ред рдореБрдЭреЗ рдбрдмрд▓ рдХреЛрд▓рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рд╣реИ рдЬреЛ рдорддрд┐рдпрд╛рд╕ рдиреЗ рд╕реБрдЭрд╛рдпрд╛ рдерд╛
+1
рдкрде рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рдРрдк рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ,
рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдХреЛрдгреАрдп рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬреБрдбрд╝рд╛ рд╣реИред
@EvanWinstanley рд╕рдорд╛рдзрд╛рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдпрд╛:
https://github.com/anglibs/angular-location-update
рдЖрдЗрдП рдЗрд╕реЗ 1.5 рдореЗрдВ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреЗрдВред #5860 . рдкрд░ рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкреАрдЖрд░ рд╣реИ
рдореБрдЭреЗ рд░реВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! :)
рдХреБрдЫ рдЗрд╕ рддрд░рд╣: $location.searchSilent('sf', SearchFilter.getForRouteParams());
$ рд╕реНрдерд╛рди.рдкрде (href);
рдЧреБрдВрдЬрд╛рдЗрд╢ред $ рд▓рд╛рдЧреВ ();
рд╕рдорд╛рдзрд╛рди рд╣реИ !!
рд╣рдореЗрдВ $apply() рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдХреЛрдгреАрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдпрд╣ рдзрд╛рдЧрд╛ 2 рд╕рд╛рд▓ рд╕реЗ рдЦреБрд▓рд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдгреАрдп рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╣рдо рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдП рдмрд┐рдирд╛ рдорд╛рд░реНрдЧ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
@petebacondarwin рдмрд┐рдирд╛ рд░реАрд▓реЛрдб рдХреЗ рди рдХреЗрд╡рд▓ рд▓реЛрдХреЗрд╢рди рдкрд╛рде рдЕрдкрдбреЗрдЯ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдмрд┐рдирд╛ рд░реАрд▓реЛрдб рдХреЗ рдкрд╛рде рдкреИрд░рд╛ рдЕрдкрдбреЗрдЯ рднреА ... рдЬреИрд╕реЗ https://github.com/angular/angular.js/issues/1699#issuecomment -96126887 рдКрдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
@jicasada рдХрд╛ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж!
@jicasada рдпрд╣ dOnSearch:false рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЕрджреНрдпрддрди рдЕрдиреБрд░реЛрдз рдкрд░рдо рдХреЗ рд╕рд╛рде рдмрд╛рд▓ рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдореВрд▓ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рджреЛ рдмрд╛рд░ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
+1
+1
рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдирдЬреАрд╕рд╛рдЗрд▓реЗрдВрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдлрд┐рд░ рднреА рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред
рд╕рдорд╛рдзрд╛рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ $location.path() рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
app.run(['$route', '$rootScope', '$location', function ($route, $rootScope, $location) {
var original = $location.path;
$location.path = function (path, reload) {
if (reload === false) {
var lastRoute = $route.current;
var un = $rootScope.$on('$locationChangeSuccess', function () {
$route.current = lastRoute;
un();
});
}
return original.apply($location, [path]);
};
}]);
рдФрд░ рдлрд┐рд░ рдмрд╕ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ
$location.path('/path/that/you/need', false);
рдореБрдЭреЗ рдмрд╕ $ location.replace рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (
(рдФрд░) +1
+1
рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ "рдЦреЛрдЬ рдкрд░рдо" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
/thing?id=1234
рд░рд╛рдЙрдЯрд░ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдкрд░рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рди рдХрд░реЗрдВ, рдпрд╣ рджреГрд╢реНрдп рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЕрдЧрд░ рдЖрдк id . рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
$location.search().id //1234
@cgross
рдбреЗрдореЛ http://codepen.io/dolymood/details/jrEQBx/
рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП decorator
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ngViewDirective
+1
+1
+1
+1
+1
+1
+!
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд +1 :-)
рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдХреНрд░рд┐рд╕рдорд╕ рд╕реЗ рдкрд╣рд▓реЗ рджреЗрдЦреЗрдВрдЧреЗ!
# 15002 рджреНрд╡рд╛рд░рд╛ рдмрдВрджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рдорд╛рдзрд╛рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ $location.path() рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдФрд░ рдлрд┐рд░ рдмрд╕ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ