2013-01-01 34 views
6

Có chức năng tương đương nào để lấy currentPath trong bảng điều khiển bằng bộ định tuyến mới trong chế độ ember không?Truy cập bộ định tuyến ember mới trong bảng điều khiển

Trước đây, tôi đã có thể làm điều này:

App.router.get("currentPath") 

Tuy nhiên, có vẻ như với các bộ định tuyến mới, bạn không thể truy cập router trong cùng một thời trang. Trong thực tế App.router chỉ đơn giản là trả về undefined.

Mọi trợ giúp ở đây sẽ được đánh giá cao.

chỉnh sửa:

Trên một lưu ý liên quan, bởi vì tôi không còn có thể truy cập App.router và thuộc tính của nó, tôi không thể tìm ra cách để tự kích hoạt thay đổi trạng thái. Ví dụ:

App.router.transitionTo("some.state") 

không còn khả thi. Bây giờ mọi người đang làm gì thay vì thế này?

Trả lời

11

Tôi tìm thấy câu trả lời chôn trong các vấn đề github. Đăng lại ở đây vì hậu thế.

App.container.lookup('router:main').router 

..quay lại bộ định tuyến. Bạn có thể truy cập transitionTo và handleURL để kích hoạt các thay đổi trạng thái theo cách thủ công. Không chính xác chắc chắn làm thế nào để có được trạng thái hiện tại như trước đây, nhưng có vẻ như bạn có thể truy cập thuộc tính currentHandlerInfos trên router để nhận được một mảng các trình xử lý hiện tại (duh).

Hy vọng điều này ngăn người khác tách tóc ra.

+1

Cảm ơn! Tôi đã tìm kiếm một thời gian trong nguồn nhưng không thể tìm thấy nó. Cảm ơn rất hữu ích! –

+0

vâng nó là một nỗi đau trong mông để tìm ra .. – hankang

+0

này không còn khả thi, vì nó đã được gỡ bỏ từ api công cộng, rõ ràng. – hankang

-2

Tôi nghĩ rằng điều này sẽ làm

function getCurrentPath(){ 
    str = "currentState.parentState" 
    arr = [] 
    arr.push(App.router.get("currentState.name")) 
    while(true){ 
    name = App.router.get(str+".name"); 
    arr.push(name) 
    str += ".parentState"; 
    if(name == "root"){ 
     break; 
    } 
    } 
    return arr.reverse().join(".") 
} 

currentPath = getCurrentPath(); 
+0

đây là câu trả lời khá hữu ích .. dường như bạn hoàn toàn bỏ qua thực tế là App.router không trả lại bất kỳ thứ gì nữa. Vì vậy, những gì sẽ là điểm làm những gì bạn đang làm? – hankang

+0

Oopsie, tôi phải đọc câu hỏi đúng: - /, App.router.get ("currentPath") không trả lại đường dẫn, Vì vậy, tôi đã làm điều này, dù sao cho những phiên bản trước ... Bạn có nhìn trộm không thông qua mã nguồn? nó có thể giúp –

+0

Không sao, tôi đánh giá cao nỗ lực này, mặc dù vấn đề của tôi vẫn chưa được giải quyết. Tôi có, trên thực tế, nhìn vào nguồn (một chút thực sự), nhưng đó là một điều khó khăn để được tìm kiếm, vì nó có nghĩa là tôi đang tìm kiếm một cái gì đó mà không còn được thực hiện. Tôi đã hy vọng một người nào đó biết một cách khác để có thể truy cập vào những tài sản đó bằng cách nào đó. – hankang

4

Tính đến xây dựng mới nhất, bạn có thể tìm thấy các router và thay đổi trạng thái như vậy:

App.Router.router.transitionTo('posts.comments'); 

hoặc

App.Router.router.handleURL('/posts/comments'); 

Tôi không biết nếu điều này là cách được đề xuất (router là một mục tiêu di động vào thời điểm này), nhưng nó hoạt động ngay bây giờ.

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