2013-04-10 37 views
6

Tôi đang chuyển sang bộ định tuyến ember mới nhưng có một câu hỏi rất đơn giản - làm cách nào để tìm ra con đường hiện tại của tôi? Trước khi bạn có thể làm điều gì đó như App.router.get('currentState'), nhưng điều này dường như không hoạt động nữa vì bộ định tuyến không còn được kế thừa từ StateManagerEmber.js nhận tuyến đường hiện tại

Trả lời

8

Hãy xem question này.

Tóm tắt: currentState hiện được lưu trữ trong thuộc tính currentPath trong ApplicationController của bạn. Các giải pháp được chấp nhận là người quan sát khách sạn này để viết nó vào một tài sản toàn cầu:

App = Em.Application.create({ 
    currentPath: '' 
}); 
ApplicationController : Ember.Controller.extend({ 
    updateCurrentPath: function() { 
     App.set('currentPath', this.get('currentPath')); 
    }.observes('currentPath') 
}); 
+0

Tuyệt vời, cảm ơn. Tôi tự hỏi liệu họ có cố tình loại bỏ chức năng đó không - tại sao chúng ta phải tự mình trải qua tất cả những điều này để có được con đường hiện tại? –

+0

Sry, tôi không biết. Bản thân tôi không bao giờ sử dụng nó theo chương trình. Tôi chỉ sử dụng nó cho mục đích gỡ lỗi. – mavilein

+0

Vì vậy, tôi chỉ cố gắng này - có vẻ như làm việc, ngoại trừ tôi không thể gọi '' 'set''' trên' '' App'''. Tất cả các cuộc gọi đến thiết lập dường như không âm thầm. Thay vào đó tôi chỉ cần đặt nó trực tiếp ('' 'App.currentPath = this.get 'currentPath'''') vì tôi chỉ cần điều này cho mục đích gỡ lỗi –

6

tôi có lẽ sẽ nhận được thổi cho điều này nhưng sau một tấn của sự thất vọng với điều này tôi quyết định thực hiện một workaround thực sự xấu xí.

Trường hợp sử dụng của tôi đang cố gắng lấy ID của bài đăng hiện tại vì tôi đã đăng câu trả lời cho bài đăng đó. Nghĩ một cái gì đó như thế này cho con đường của chúng tôi hiện nay:

" ... #/bài/12345"

workaround của tôi (mã xấu nhất bao giờ):

var currentId = window.location.hash.split('/')[2]; 
App.Message.createRecord({ 
     content: message, 
     inReplyTo: currentId 
    }).get('transaction').commit(); 
+2

+1 không ai có thể đổ lỗi cho bạn để thực sự hoàn thành những gì bạn muốn, ngay cả khi nó đi theo cách "xấu xí". –

1

Trong điều khiển tôi có thể nhận được các tuyến đường hiện tại bằng cách sử dụng mã bên dưới. Chúc may mắn

this.get ("currentRouteName")

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