2013-03-25 10 views
5

Mi chiedo come posso creare un menu come in this website con Ember?Come creare un menu a una pagina in Ember?

La pagina è suddivisa in diverse sezioni e possiamo scorrere per andare a ciascuna sezione, un clic sul menu far scorrere la pagina verso la sezione desiderata.

Non sono sicuro se dovrei avere percorsi diversi nel router per questo comportamento, direi che non è il caso, perché quando cambiamo percorso la vista viene rimossa dal DOM.
Quindi, come dovrei creare il collegamento dell'ancora ad ogni sezione?

La soluzione migliore aggiorna automaticamente il percorso quando si scorre la pagina ma qualsiasi soluzione per gestire il collegamento e il riconoscimento URL andrà bene.

+0

si sarà felici di pubblicare il tuo soluzione di back qui se hai trovato uno. – brg

+0

Sarò, ma in realtà non ho trovato una soluzione adeguata per questo ... ancora in attesa di risposta pertinente. –

+0

ok cheers, se riesco a ottenere una soluzione, invierò anche qui. – brg

risposta

1

Alcuni possono sostenere il contrario, ma Ember può essere un po 'eccessivo per una pagina di destinazione sito come hai mostrato. Ember si intende più per robuste applicazioni web che hanno più viste e dati con cui devono essere connessi.

Prima di tutto, se si look at their script, si sta utilizzando jQuery per animare s' il bodyscrollTop posizione al rispettivo div e l'impostazione window.location.hash alla hash dell'Enciclopedia di href elemento di menu, che avviene anche per essere l'ID del <section/> del body scorre a:

$(document).on('click', '#nav a, .clients-capabilities a', function(){ 
    var target = $(this); 
    var hash = this.hash; 
    var destination = $(hash).offset().top; 

    stopAnimatedScroll(); 

    $('#nav li').removeClass('on'); 
    target.parent().addClass('on'); 

    $('html, body').stop().animate({ 
     scrollTop: destination 
    }, 400, function() { window.location.hash = hash; }); 
    return false; 
}); 

in secondo luogo, non stanno facendo nulla di speciale per caricare ad una posizione specifica al caricamento della pagina. Se carichi una pagina sul Web con un hash, il browser cercherà un elemento con quell'ID e verrà caricato in quella posizione. Ad esempio, http://emberjs.com/#download.

Anche se si desidera ancora utilizzare Ember per questo, probabilmente si finirà per fare qualcosa di simile con una singola vista caricata dal percorso / quindi non mi preoccuperei nemmeno di Ember finché il tuo sito non diventerà un vero e proprio sito web app.

+0

Grazie per la tua risposta @Corey!In realtà, non voglio questo tipo di menu per una semplice applicazione. Ho un'applicazione Ember completa e ho bisogno di questo tipo di menu per una pagina nell'applicazione. Capisco come è fatto sul sito web che ho dato, ma ho bisogno di implementarlo in una pagina di un'app Ember, quindi l'ancora alla fine dell'URL non mi aiuta. Mi manca qualcosa? –

0

Provare a utilizzare uno *: catturare tutti gli schemi del router nella pagina che si desidera gestire questo scenario.

quindi diciamo che l'indice funzionerà come una singola pagina che devi essere in grado di scorrere automaticamente verso determinati elementi dall'URL.

Inoltre si ha messaggi e circa sottopagine che si può andare dalla pagina di indice tramite link.

poi ...

App.Router.map(function() { 
    this.route('about'); 
    this.route('posts'); 
    this.route('index',{path:'*:'}); 

}); 

quindi se avete un elemento con id = "elementToScrollTo" quindi l'url/# elementToScrollTo sarebbe caricare la pagina indice e scorrere fino a tale elemento.

Vedere How to handle 'no route matched' in Ember.js and show 404 page? anche per altri modi per risolvere questo problema.

Spero che questo ti aiuti.

+0

nella tua pagina indice usa il manubrio {{# link-to 'sulla sintassi'}} Informazioni su {{/ link-to}} per arrivare a queste rotte –

Problemi correlati