Twitter bootstrap 使用AngularJS和模态对话框清理URL

Twitter bootstrap 使用AngularJS和模态对话框清理URL,twitter-bootstrap,angularjs,modal-dialog,angular-ui-bootstrap,Twitter Bootstrap,Angularjs,Modal Dialog,Angular Ui Bootstrap,我使用的是AngularJS+由提供的“modal”指令。模态对话框工作得很好,但我有一个问题:URL没有改变 例如,我的AngularJS应用程序为“/人”设置了一条路线,其中显示了一个人员列表。当用户单击某人时,会出现一个模式对话框,显示详细信息。我试图弄清楚如何修改URL,而不实际导致$routeProvider重新执行控制器 例如,我的路线中可能有类似的内容: $routeProvider。 当('/people',{controller:PeopleCtrl,templateUrl:'

我使用的是AngularJS+由提供的“modal”指令。模态对话框工作得很好,但我有一个问题:URL没有改变

例如,我的AngularJS应用程序为“/人”设置了一条路线,其中显示了一个人员列表。当用户单击某人时,会出现一个模式对话框,显示详细信息。我试图弄清楚如何修改URL,而不实际导致$routeProvider重新执行控制器

例如,我的路线中可能有类似的内容:

$routeProvider。
当('/people',{controller:PeopleCtrl,templateUrl:'templates/people.html'})时。
when('/people/:personId',{controller:PeopleCtrl,templateUrl:'templates/people.html'})。
然后在我的PeopleCtrl中,我可以做:

if($routeParams.personId){
$scope.editPerson({id:$routeParams.personId});
}
它基本上调用了与我绑定的函数相同的函数,即点击一行行人。这可以让我的应用程序响应像/people/123这样的URL,但我不知道如何在模式对话框打开和关闭时让URL从/people跳转到/people/123,然后返回到/people

显然,我可以直接调用$location.path(“/people”),但问题是PeopleCtrl会被重新执行,我希望避免这种情况,因为应该保留模态的“后面”状态

换句话说:我正在寻找一种方法来更改URL/位置,而不会检测到正常的$routeProvider更改

谢谢

找到了我想要的东西:

function MyCtrl($route, $scope) {
    var lastRoute = $route.current;
    $scope.$on('$locationChangeSuccess', function(event) {
        $route.current = lastRoute;
    });
}