2015-05-04 16 views
5

Tôi có một trạng thái đó trông giống như một cái gì đó như thế nàyui-router không thấy params tìm kiếm url sau khi trang làm mới

.state('home.foo.bar', { 
    url: 'view?one&two', 
    views: { 
    'base': { 
     templateUrl: 'blah', 
     controller: 'blahCtrl' 
    } 
    }, 
    reloadOnSearch: false 
}) 

nếu tôi hướng đến trạng thái này trong mẫu của tôi với

ui-sref="home.foo.bar({one: valueOne, two: valueTwo})" 

tất cả là tốt và url là

.com/xem? one = valueOne & hai = valueTwo

tuy nhiên nếu tôi làm mới trang, url sẽ thay đổi thành chỉ .com/view và không $state.params hoặc $stateParams chứa các giá trị.

nếu tôi thêm một bước quyết tâm như vậy

.state('home.foo.bar', { 
    url: 'view?one&two', 
    views: { 
    'base': { 
     templateUrl: 'blah', 
     controller: 'blahCtrl' 
    } 
    }, 
    resolve: { 
    p: function($location, $stateParams, $state) { 
     console.log($location.search(), $stateParams, $state); 
     if(!$stateParams.one && !$stateParams.two { 
     $stateParams.one = $location.search().one; 
     $stateParams.two = $location.search().two; 
     } else { 
     return $location.search().one; 
     } 
    } 
    }, 
    reloadOnSearch: false 
}) 

sau đó khi tôi bước đầu chuyển hướng đối với nhà nước trong mẫu của tôi in tuyên bố log gì cho $location.search() nhưng thấy oneValuetwoValue trong $stateParams$state.params. Khi tôi làm mới đối diện $location.search() đối diện của chúng tôi hiển thị thông số và giá trị của chúng một cách chính xác nhưng $stateParams$state.params trống.

thêm tuyên bố if và đặt giá trị giải quyết dứt khoát lỗi của tôi nhưng không thể làm việc như dự định có thể?

Tôi có thiếu thứ gì đó hiển nhiên không?

+0

có vẻ như bạn cần phải xem https://github.com/angular-ui/ui-router/issues/1079 –

+0

Cảm ơn bạn đã trả lời, tôi đã đọc qua chủ đề đó nhưng tôi không nghĩ rằng là cùng một vấn đề tôi đang đề cập đến ở đây. Họ đều nói về các vấn đề khi điều hướng giữa các tiểu bang. Tôi đang nói về một vấn đề khi tôi làm mới trang trình duyệt để ứng dụng góc toàn bộ được tải lại từ đầu – Ir1sh

Trả lời

1

tôi nghĩ rằng nó có thể là do bạn đang thiếu một dấu gạch chéo ở đầu hoặc URL của bạn:

.state('home.foo.bar', { 
    url: '/view?one&two', 
    views: { 
    'base': { 
     templateUrl: 'blah', 
     controller: 'blahCtrl' 
    } 
    }, 
    reloadOnSearch: false 
}) 
+0

Cảm ơn nhưng các trạng thái này thực sự mở rộng một tuyến đường cơ sở khác có url kết thúc bằng dấu gạch chéo. Bạn vẫn nghĩ rằng đó có thể là vấn đề? – Ir1sh

+0

Tôi nghĩ rằng đây là vấn đề. Hãy thử bằng cách giữ dấu gạch chéo sau trên phụ huynh, tôi không chắc chắn nếu nó sẽ thêm một dấu gạch chéo kép. Nếu có, hãy xóa dấu gạch chéo ở cuối và đặt strictMode thành false. –

+0

Nhưng ngay cả với dấu gạch chéo, chúng tôi vẫn gặp phải hành vi này! – Yosh

0

tôi đã cùng một vấn đề. Tuy nhiên, hóa ra vấn đề không phải là angular. Kiểm tra định tuyến của bạn trên máy chủ, có thể thay đổi url.

0

Trong trường hợp của tôi, tôi can thiệp vào các statechange thường xuyên/STATESTART/statesuccess nên trong việc giải quyết của tôi trong statesuccess Tôi đã thêm:

//$state.go(toState,toParams); 
//when I manupulated the regular ui-router params 
$state.go($rootScope.toState,$rootScope.toParams); 

Vì vậy, tôi đã nhận thức qua toParams khi bạn thay đổi các thông số ui-router thường xuyên điều khiển.

Các vấn đề liên quan