Phiên bản ngắn của câu hỏi là: Làm cách nào để thay đổi URL mà không cần kích hoạt thay đổi tuyến đường hoặc không cần chạy tất cả các bộ điều khiển trên trang hiện đang hiển thị?Thay đổi đường dẫn vị trí AngularJs mà không cần tất cả bộ điều khiển đặt lại
chi tiết:
Tôi có một mẫu mà sẽ được hiển thị bên trong <ng-view>
có khu vực chi phối bởi 3 bộ điều khiển. Trên đầu trang tôi có một bản đồ tương tác. Khi bạn nhấp vào các khu vực, nó sẽ phát một nhấp chuột và thành phần khác chọn lên trên đó và hiển thị dữ liệu về vùng này. Thiết lập thực sự đơn giản.
Điều tôi muốn làm là cho phép người dùng của tôi liên kết sâu với nội dung. Vì vậy, mỗi khi ai đó nhấp vào một liên kết tôi muốn thay đổi URL có thể được sao chép và dán vào một trình duyệt khác. Một số người dùng khác chỉ có thể nhấp vào liên kết và xem trạng thái tương tự mà người đầu tiên nhìn thấy.
Hiện nay tôi thay đổi vị trí với mã tương tự như thế này:
$scope.$on('mapRegionClick', function($scope, regionCode) {
var url = generateURL(regionCode);
$scope.currentScope.$apply(function(){
$location.path(url);
});});
URL sau đó được vớt lên trong định tuyến của tôi và bản đồ cộng với dữ liệu hiển thị một cách chính xác. Nhược điểm của việc này là mỗi lần tôi nhấp vào bản đồ và URL thay đổi toàn bộ mẫu/chế độ xem được tạo lại. Bởi vì tạo bản đồ nặng nề nên tôi chỉ muốn kích hoạt một thay đổi đối với bộ điều khiển trình bày dữ liệu.
Có thể không? Làm sao?
Tôi có thể làm một số thông tin liên lạc giữa các bộ điều khiển và đạt được mục tiêu của mình nhưng sau đó tôi sẽ không thể liên kết sâu.
PS: Tôi không muốn sử dụng $location.search()
và reloadOnSearch=false
. liên kết của tôi phải đẹp hơn :)
bạn đã thử đặt bản đồ bên ngoài 'ng-view' và liên kết bộ điều khiển của nó với bộ điều khiển được gắn với tuyến đường bằng dịch vụ dùng chung chưa? – akonsu
điều là tôi cần bản đồ bên trong 'ng-view' cho mẫu cụ thể này bởi vì các phần khác của trang web sử dụng một số mẫu khác mà bản đồ không phải là một phần của chúng. – Ralphz
Thật đáng tiếc khi góc cạnh không cung cấp cách làm sạch. Tôi thích góc cạnh, nhưng đây là lý do tôi ưa thích Ember trên một trong những dự án của tôi. –