Angular / UI路由器 – 如何更新url而不刷新所有内容?

我是Angular和ui路由器的新手。 当有人select一个模型,我的控制器执行一个标准的SHOW方法时,我只是想更新URL来包含模型的ID,而不刷新页面,并继续我的原始视图。 我不知道该怎么做

$stateProvider .state('citylist', { url: "/", templateUrl: "views/index.html" }) .state('cityshow', { url: "/city/:id", templateUrl: "views/index.html" }) angular.module('app.system').controller('IndexController', ['$scope', 'Global', 'Cities', '$stateParams', '$location', function ($scope, Cities, $stateParams, $location) { $scope.loadTown = function(id) { Cities.get({id: id }, function(city) { $scope.city = city // Change URL // Do things within the same view... }); }; }); <button ng-click="loadTown(123456)">Chicago</button> 

您使用的代码片段与正确的UI路由器设置有一点距离。 我会build议你,检查这个演示应用程序: http : //angular-ui.github.io/ui-router/sample/#/contacts/1 。 在这里,我们可以看到List是如何“固定的”,而细节在没有任何页面刷新的情况下被更改。

这个例子的代码在这里下载https://github.com/angular-ui/ui-router/tree/master/sample

什么应该帮助了解如何(除了维基 )是这个代码片段: state.js 。 加载演示,阅读这个评论说明。 而ui-router将是有道理的…

实质上,你想要做的不是把城市代码放在ui-view中,也不要在这个视图中使用模板。 因此,没有一个DOM会被更改,但URL会。 在Angular-ui.router上更详细地讨论这个问题:更新没有视图刷新的URL