2012-06-22 14 views
6

Eminim ki daha derine indiğimde bu netleşecektir, ancak şimdilik bunun nasıl gerçekleşeceği açık değildir.Ember.js yönlendirmesi: Hemen oluşturulmak üzere varsayılan bir yol nasıl belirlersiniz?

this helpful SO article about routing üzerindeki bilgileri takip ediyordum, ancak örnekte önemli bir eksiklik var, yani 'ev' bağlantısını tıklamak zorunda kalmadan 'ev' görünümünü hemen nasıl alacaksınız?

Bunu anlamayı denemek için dokümanlar kazmaya başladım, ancak bu arada, posterity için yanıtlanmış yararlı bir soru gibi görünüyor.

Yukarıdaki soruya here çalışan jsfiddle örnekle oynayan ve bu diğer örnekle karşılaştırılarak ben seems to have the default routing working

Şimdiye kadar hala bir sır olduğunu tespit ettik.

Güncel kodu:

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"); 
     } 
    }) 
}); 

GÜNCELLEME: oldukça Em.State.extend kullanıyordum çünkü Çözüm

O Yolunda gitmeyen ile çalışıyordu nedeni örneğiydi çıkıyor Em.Route.extend'dan. İlginç olan kısım, adım adım ilerledikçe ve bunları teker teker değiştirdiğimde, bunların hepsini değiştirene kadar örnek çalışmaz. İşte

çalışma example geçerli:

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"); 
     } 
    }) 
}); 

cevap

3

U ev yoluna dizinden bir yönlendirme yapabilirsiniz. Çalışma Örneği: http://jsfiddle.net/FRfBt/

+1

Teşekkür çalışma örneğin. Yukarıdaki örneklemden farkın ne olduğunu anlamak bana biraz zaman aldı ama sonunda anladım. Verdiğim örnek, "Em.Route.extend" yerine "Em.State.extend" kullandığından çalışmadı – radixhound

9

Şimdi farklı şekilde yapılmış gibi görünüyor. Bunu yapmanın bu şekilde kullanarak başarılı olmuş:

Kor CLI ile
App = Ember.Application.create(); 

App.Router.map(function() { 
    // 'index' route is default 
    this.resource('dashboard'); 
}); 

App.IndexRoute = Ember.Route.extend({ 
    redirect: function() { 
     // this redirects/to /dashboard 
     this.transitionTo('dashboard'); 
    } 
}); 

App.DashboardRoute = Ember.Route.extend({ 
}); 
6

, sen yolları dizinin sizin kök index.js içinde yönlendirmeyi koyabilirsiniz:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    redirect: function() { 
    this.transitionTo('dashboard'); 
    } 
}); 
İlgili konular