Twitter bootstrap 使用AngularJS和模态对话框清理URL
我使用的是AngularJS+由提供的“modal”指令。模态对话框工作得很好,但我有一个问题:URL没有改变 例如,我的AngularJS应用程序为“/人”设置了一条路线,其中显示了一个人员列表。当用户单击某人时,会出现一个模式对话框,显示详细信息。我试图弄清楚如何修改URL,而不实际导致$routeProvider重新执行控制器 例如,我的路线中可能有类似的内容: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:'
$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;
});
}