7
votes

Routage EMBER.JS: Comment définissez-vous une route par défaut pour rendre immédiatement?

Je suis sûr que cela deviendra clair car je creuse de plus en plus, mais pour l'instant, ce n'est pas évident comment faire cela arriver.

Je suivais l'info sur Cela a été utile que l'article sur le routage mais Il y a une pièce importante manquante de l'exemple, c'est-à-dire comment obtenez-vous la vue "Accueil" pour rendant immédiatement sans avoir à cliquer sur le lien "Accueil"? P>

J'ai commencé à creuser dans les documents Essayez de donner un sens à cela, mais il semble qu'après une question utile à avoir répondu à la postérité. p>

Je joue avec l'exemple de Jsfiddle de travail de la question ci-dessus ici et comparer avec cet autre exemple, j'ai trouvé que semble avoir le routage par défaut qui fonctionne p>

jusqu'à présent, c'est toujours un mystère. P>

Code actuel STRT>: P>

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


0 commentaires

3 Réponses :


4
votes

Vous pouvez faire une redirection de l'index à la route d'origine:

p>

<script type="text/x-handlebars" data-template-name="application">
    {{view App.NavView controllerBinding="controller.controllers.navController"}}
    <hr />
    <div class="content">
        {{outlet}}
    </div>
</script>

<script type="text/x-handlebars" data-template-name="nav">
    <h1>navigation:</h1>
    <button {{action goHome}}>home</button>
    <button {{action goProfile}}>profile</buton>
</script>

<script type="text/x-handlebars" data-template-name="home">
    <h1>Home...</h1>
</script>
<script type="text/x-handlebars" data-template-name="profile">
    <h1>Profile...</h1>
</script>


1 commentaires

Merci pour l'exemple de travail. Il m'a fallu un moment pour savoir quelle est la différence de mon exemple ci-dessus, mais je l'ai finalement compris. L'exemple que j'ai donné n'a pas fonctionné car il utilisait em.state.extend plutôt que em.Route.extend



9
votes

Il semble que cela soit fait différemment maintenant. J'ai eu du succès avec cette façon de le faire:

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({
});


0 commentaires

9
votes

avec Ember CLI, vous pouvez mettre la redirection dans Index.js dans votre racine du répertoire des itinéraires: xxx


0 commentaires