J'ai une application, qui aura une couche de vue organisée en trois parties:
J'ai passé plusieurs heures à essayer de trouver quelque chose d'utile avec google, mais je n'ai pas eu de chance. J'aurais besoin d'un exemple d'application court et complet sur la façon de procéder à l'aide de Router et connectOutlet, avec des prises nommées.
Merci d'avance.
MISE À JOUR: Ce code est obsolète, en raison des changements de l'API Ember.
J'ai atteint un point où je peux dire que j'ai trouvé la solution qui me convient le mieux.
<script type="text/x-handlebars" data-template-name="application">
<div class="container">
<div class="toolbar">{{outlet toolbar}}</div>
<div class="main">{{outlet dashboard}}</div>
<div class="sidebar">{{outlet sidebar}}</div>
</div>
</script>
En utilisant un tel modèle d'application, je peux choisir où rendre les vues. Comme ça:
App.router = Ember.Router.create({
enableLogging: true,
location: 'history',
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/admin/',
redirectsTo: 'login'
}),
login: Ember.Route.extend({
route: '/admin/login/',
doLogin: function(router, context) {
"use strict";
router.transitionTo('dashboard', context);
},
connectOutlets: function (router, context) {
"use strict";
router.get('applicationController').connectOutlet('login', "login");
}
}),
dashboard: Ember.Route.extend({
route: '/admin/dashboard/',
doLogout: function(router, context) {
"use strict";
router.transitionTo('login', context);
},
connectOutlets: function (router, context) {
"use strict";
router.get('applicationController').connectOutlet('sidebar', 'sidebar');
router.get('applicationController').connectOutlet('toolbar', 'toolbar');
router.get('applicationController').connectOutlet('dashboard', 'dashboard');
}
})
})
});
J'ai les trois points de vue, qui ne sont pas importants du point de vue de la solution, ceux qui sont rendus à leurs points de vente.
J'espère que cela aide les autres.
Avec le nouveau routeur, vous pouvez faire quelque chose comme ceci:
{{outlet "menu"}}
{{outlet}}
Dans votre itinéraire, vous pouvez gérer le contenu des points de vente:
// application route
Ember.Route.extend({
renderTemplate: function() {
// Render default outlet
this.render();
// render extra outlets
this.render("menu", {
outlet: "menu",
into: "application" // important when using at root level
});
}
});
Vous devriez cependant avoir un modèle menu
-.
Vous pouvez en savoir plus ici .
Dans votre modèle d'application, vous devrez déclarer une sortie nommée comme {{outlet sidebar}}
. De même pour les barres d'outils que vous avez mentionnées.
EDIT: Le reste est obsolète. Comme l'a dit @dineth, voir Rendu d'un modèle .
Puis dans votre itinéraire (disons App.NavigationView
est ce que vous voulez y coller):
App.Router = Em.Router.extend({ root: Em.Route.extend({ index: Em.Route.extend({ route: '/', connectOutlets: function(router) { router.get('applicationController').connectOutlet('sidebar', 'navigation'); } }) }) });
Exemple de barre latérale: http://jsfiddle.net/q3snW/7/
Référence cette documentation sur le {{outlet}}
helper, et cette documentation sur le .connectOutlet
rappeler.