Tôi chắc chắn điều này sẽ trở nên rõ ràng khi tôi đào sâu hơn, nhưng bây giờ không rõ ràng cách thực hiện điều này.Định tuyến Ember.js: làm cách nào để bạn đặt tuyến đường mặc định để hiển thị ngay lập tức?
Tôi đã theo dõi thông tin trên this helpful SO article about routing nhưng có một phần quan trọng bị thiếu trong ví dụ, tức là làm cách nào để hiển thị chế độ xem 'trang chủ' ngay lập tức mà không phải nhấp vào liên kết 'nhà riêng'?
Tôi đã bắt đầu đào sâu vào tài liệu để cố gắng hiểu rõ điều này, nhưng trong khi đó, nó có vẻ như một câu hỏi hữu ích để trả lời cho hậu thế.
Tôi đã chơi với ví dụ jsfiddle làm việc kể từ câu hỏi trên here và so sánh với ví dụ khác này, tôi phát hiện ra rằng seems to have the default routing working
Cho đến nay nó vẫn còn là một bí ẩn.
hiện tại đang:
App.Router = Em.Router.extend({
enableLogging: true,
location: 'hash',
root: Em.State.extend({
// EVENTS
goHome: Ember.State.transitionTo('home'),
viewProfile: Ember.State.transitionTo('profile'),
// STATES
index: Em.State.extend({
route: "/",
redirectsTo: 'home'
}),
home: Em.State.extend({
route: '/home',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('home');
}
}),
// STATES
profile: Em.State.extend({
route: '/profile',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('profile');
}
}),
doOne: function() {
alert("eins");
}
})
});
UPDATE: Giải pháp
Nó chỉ ra rằng lý do ví dụ tôi đã làm việc với không hoạt động là vì nó được sử dụng Em.State.extend
thay hơn Em.Route.extend
. Phần thú vị là khi tôi bước qua và thay đổi từng cái một thì ví dụ này không hiệu quả cho đến khi tôi thay đổi tất cả chúng.
Đây là làm việc example:
App.Router = Em.Router.extend({
enableLogging: true,
location: 'hash',
root: Em.Route.extend({
// EVENTS
goHome: Ember.State.transitionTo('home'),
viewProfile: Ember.State.transitionTo('profile'),
// STATES
index: Em.Route.extend({
route: "/",
redirectsTo: 'home'
}),
home: Em.Route.extend({
route: '/home',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet({name: 'home'});
}
}),
// STATES
profile: Em.Route.extend({
route: '/profile',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('profile');
}
}),
doOne: function() {
alert("eins");
}
})
});
Cảm ơn các ví dụ làm việc. Phải mất một thời gian để tìm ra sự khác biệt là gì từ ví dụ của tôi ở trên nhưng cuối cùng tôi đã tìm ra nó. Ví dụ tôi đã không làm việc vì nó đã sử dụng 'Em.State.extend' thay vì' Em.Route.extend' – radixhound