2013-02-25 29 views
8

Tôi đang sử dụng Ember.js và tôi muốn tạo một tuyến đường bắt tất cả để đưa người dùng trở lại gốc của ứng dụng nếu họ điều hướng đến URL không phù hợp với tài nguyên. (Tôi đang sử dụng API lịch sử) Tôi đã thực hiện điều này như sau:Xác định một đoạn bắt đa phân đoạn tất cả tuyến đường trong ember.js

App.Router.map(function() { 
    this.resource('things', function() { 
     this.resource('thing', {path:':thing_id'}); 
    }); 
    this.route('catchAll', { path: ':*' }); 
    this.route('catchAll', { path: ':*/:*' }); 
    this.route('catchAll', { path: ':*/:*/:*' }); 
}); 

App.Router.reopen({ 
    location: 'history' 
}); 

App.CatchAllRoute = Ember.Route.extend({ 
    redirect: function() { 
     this.transitionTo('index'); 
    } 
}); 

App.IndexRoute = Ember.Route.extend({ 

}); 

Câu hỏi của tôi là: Tôi có thể xác định một nắm bắt đơn tất cả các tuyến đường đó sẽ phù hợp với bất kỳ con đường đó đã không được giải quyết tới một tài nguyên không phụ thuộc vào số phân đoạn trong đường dẫn?

Tôi đang sử dụng Ember.VERSION: 1.0.0-rc.1

Trả lời

21

Sau khi một số không quan trọng tôi nghĩ rằng tôi đã tìm thấy một giải pháp: các *: dường như làm các trick, như

this.route('catchAll', { path: '*:' }); 

Tôi thiết lập this fiddle để minh họa cách hoạt động.

+0

Ups, tìm thấy lỗi sao chép-dán, mã được cập nhật. –

+0

Hoàn hảo! Cảm ơn! – i0n

+1

Điều này là chính xác, nhiều hay ít, nhưng hơi khó hiểu. ':' Là tên bạn đặt cho phần bắt tất cả. Thay vì '* wildcardurl' hoặc tương tự. Giống như khi bạn đang làm việc với các thông số trong thiết lập mô hình của bạn. –

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