5

Tôi đang sử dụng AngularJS + chỉ thị "phương thức" được cung cấp bởi UI Bootstrap. Hộp thoại phương thức hoạt động tốt, nhưng tôi có một vấn đề: URL không thay đổi.URL sạch với AngularJS và hộp thoại phương thức

Ví dụ: ứng dụng AngularJS của tôi có lộ trình được thiết lập cho "/ people", hiển thị danh sách mọi người. Khi người dùng nhấp vào một người, một hộp thoại phương thức xuất hiện và hiển thị thông tin chi tiết. Tôi đang cố gắng tìm ra cách để sửa đổi URL mà không thực sự gây ra $ routeProvider để tái thực hiện bộ điều khiển.

Ví dụ, tôi có thể có một cái gì đó như thế này trong các tuyến đường của tôi:

$routeProvider. 
when('/people', {controller: PeopleCtrl, templateUrl: 'templates/people.html'}). 
when('/people/:personId', {controller: PeopleCtrl, templateUrl: 'templates/people.html'}). 

Sau đó, trong PeopleCtrl của tôi, tôi có thể làm:

if ($routeParams.personId) { 
    $scope.editPerson({id: $routeParams.personId}); 
} 

Mà về cơ bản gọi hàm tương tự mà tôi ràng buộc với ng-click vào các hàng của người dân. Điều này hoạt động theo cách cho phép ứng dụng của tôi phản hồi URL giống như/người/123, nhưng tôi không thể tìm ra cách để URL chuyển từ/người đến/người/123 và sau đó quay lại/người như phương thức hộp thoại mở và đóng.

Rõ ràng, tôi chỉ có thể gọi $ location.path ("/ người") nhưng vấn đề với điều đó là PeopleCtrl được tái xuất hiện và tôi muốn tránh điều đó vì trạng thái "đằng sau" phương thức cần được giữ nguyên.

Nói cách khác: Tôi đang tìm cách thay đổi URL/vị trí mà không bị phát hiện $ routeProvider bình thường.

Cảm ơn!

Trả lời

5

Tìm thấy another SO post đó đã làm chính xác những gì tôi đang tìm kiếm:

function MyCtrl($route, $scope) { 
    var lastRoute = $route.current; 
    $scope.$on('$locationChangeSuccess', function(event) { 
     $route.current = lastRoute; 
    }); 
} 
Các vấn đề liên quan