2014-05-15 2 views
0

Je pense que cela pourrait être une question commune, mais je n'ai pas trouvé ma réponse, c'est pourquoi je pose cette question. Je suis désolé si je suis répétitif.Quelles sont les meilleures options pour créer une navigation avec AngularJS?

J'ai une page avec quelques catégories. Et chaque catégorie a une catégorie comme ses enfants. Et, l'utilisateur peut cliquer dans cette catégorie et les $ scope.categories changeront avec ces enfants, jusqu'à ce que nous n'ayons plus d'enfants. Mais, lorsque l'utilisateur clique dans une catégorie pour montrer ses enfants, je veux changer l'URL, pour faire un permalien pour la catégorie visible à ce moment-là.

J'ai essayé d'utiliser $ location, mais $ location ne change pas mon absURL, il suffit de mettre une ancre à la fin de l'URL, comme '/ path # category_slug'. Je veux passer à '/ path/category_slug'. La raison en est que je veux indexer ces URL dans les moteurs de recherche. Donc, si l'entrée de l'utilisateur dans '/ path/category_slug', je vais changer $ scope.categories basé sur category_slug.

Ma question est, quelles sont les meilleures options pour le faire?

Répondre

1

Si vous utilisez AngularJS, il est peu probable que Google ou d'autres moteurs de recherche comprennent peu le contenu de votre site. Le problème est plus important que la simple navigation! Voir la question suivante:

How do search engines deal with AngularJS applications?

Si vous êtes préoccupé par les moteurs de recherche, vous allez devoir créer un site basé page plus traditionnelle, en utilisant angulaire pour de petites quantités d'interactivité.

+0

Wow, bonne astuce. Je peux voir, le problème est plus grand ... mais, au moins, je peux avoir mes URLs indexées, si je fais '/ path/category_slug' non? Dois-je utiliser window.location pour définir et obtenir, ou AngularJS me donne une autre option? – rafaels88

0

Si vous basculez votre application AngularJS en mode HTML5, vous ne disposerez plus de ces symboles # dans les URL.

Dans votre fichier app.js, réglez le mode html5 true:

$locationProvider.html5Mode(true); 

Mais attention, ce n'est pas si simple. Vous devez ensuite configurer votre serveur pour réécrire toutes les demandes. Nous appelons cela "réécriture d'url" et il y a plusieurs façons de le faire en fonction du serveur que vous utilisez.

Questions connexes