Ember.js ancre de lien
J'ai une boîte de dialogue de connexion sur la page d'accueil que j'ai besoin de créer un lien. La boîte de dialogue de connexion a id="login
" en html et j'ai un lien comme cela <li><a href="#login">Login</a></li>
ainsi de suite cliquez sur il me faut pour que la connexion div mais quand j'ai cliquer sur "actualiser" ou de consulter directement le lien avec l'ancre-je obtenir Uncaught Error: No route matched the URL 'login'
Quelqu'un a des idées de comment je peux accomplir cette tâche simple dans la Braise? Merci.
Mise à jour
Voici comment mon code ressemble à ceci:
La navigation
<ul class="nav navbar-nav pull-right">
<li><a href="#login">Signup</a></li>
<li>{{#linkTo 'about'}}About{{/linkTo}}</li>
</ul>
et quelque part ci-dessous sur la page j'ai
<section id="login">
-- some content
</section>
WIP: voir github.com/emberjs/ember.js/issues/4098 annoncés en 1.8 et nous avons pu l'avoir en 1.9 emberjs.com/guides/deprecations/...
C'est un doublon: stackoverflow.com/questions/16489533/...
C'est un doublon: stackoverflow.com/questions/16489533/...
OriginalL'auteur eddie.vlagea | 2013-08-26
Vous devez vous connecter pour publier un commentaire.
Requête Params
Mise à jour de réponse basé sur la Requête Params approche (actuellement en vedette drapeau à compter du 21 Décembre 2013)
Basé sur alexspellers original JSFiddle, démo complète peut être trouvée ici: http://jsfiddle.net/E3xPh/
Dans votre
Router
, ajouter le support pour la requête paramsÀ l'aide de la
Route
de votre choix, l'installation d'une propriété pour l'anchor
requête param dans lesetupController
méthode.Enfin dans votre
Controller
faire un observateur de laanchorLocation
propriété.Maintenant, vous pouvez utiliser le code suivant dans vos templates pour faire défiler jusqu'à un point d'ancrage ou pointez votre navigateur sur
/#/?anchor=#login
par exemple.Action Simple approche
Possible de répondre en fonction de ce que vous avez écrit dans les commentaires à la première réponse. Bidouillé quelque chose de simple ici.
http://jsbin.com/osEfokE/11
Cliquant sur le lien de l'Index vous emmène à la IndexRoute et des parchemins vous à la boîte de connexion, cependant, l'URL n'est pas en tenant compte de ce changement et en tapant #connexion ne fonctionnera pas non plus.
Au lieu d'utiliser linkTo, vous allez utiliser goToLink dans votre modèle lorsque vous voulez faire défiler jusqu'à un point d'ancrage.
Le seul moyen serait d'adapter cela à l'aide de la requête params maintenant à la disposition de Braise. Ce qui signifie que vous pointez votre navigateur sur
/#/home?show=login
par exemple. Je n'ai pas essayé moi-même, mais je pourrais peut-être prendre un coup d'oeil et mise à jour de cette réponse.Ajouté solution possible pour votre cas d'utilisation dans la mise à jour de réponse.
Hey kroofy, j'ai juste essayé votre solution mais une requête params a changé au cours des dernières semaines et il ne semble pas fonctionner / je ne suis pas à la faire fonctionner plus. Serait vraiment utile si vous pouviez mettre à jour cette ou me diriger dans la bonne direction.
ils travaillent sur une réécriture de la requête params, sera publié prochainement (il me semble), il n'aura plus besoin de vous pour ajouter
queryParams
à votre itinéraire, mais à la place de votre contrôleur, il y a une page de doc pour la nouvelle requête params ici: emberjs.com/guides/routing/query-params je vais mettre à jour ma réponse quand la nouvelle requête params approche est libéré au public afin d'éviter ma réponse à devenir hors de propos (encore une fois).OriginalL'auteur
Le problème est que la Braise utilisé, la valeur de hachage de la partie de l'URL pour stocker l'état actuel de votre application. Spontanément, je vois deux solutions possibles.
1 - *Ne laissez pas de Braise utiliser le hachage partie de votre Url.* Par conséquent, l'utilisation de la HTML5 histoire emplacement de la mise en œuvre de Braise. Cela se traduira dans les Url comme
yourdomain.com/users/1/
sans#
.2 - N'utilisez pas cette technique. Au lieu d'utiliser jQuery pour faire défiler la partie pertinente. Cela pourrait ressembler à ceci:
Et dans la vue correspondante:
Cela peut sembler beaucoup de code pour cette petite fonctionnalité, mais je suppose que c'est une belle expérience de l'utilisateur le droit? En fait, vous pouvez améliorer cette approche par l'extraction de cette logique dans un mixin, de sorte que vous n'avez pas à répéter encore et encore:
Et à utiliser dans votre modèle:
PS: je n'ai pas testé le code avec le mixin. Je ne suis pas absolument sûr que la Chaîne "login" est passée à l'action gestionnaire exactement comme ça. Vous aurez donc à tester 🙂
J'aime beaucoup votre approche n'ai pas testé le mixin encore que), mais le principal problème est toujours là: quand je suis sur la page d'accueil et cliquez sur connexion, rien ne se passe quand il doit me diriger vers la page d'accueil et faites défiler jusqu'à la zone de connexion. Dans la plaine de code html, ceci est réalisé très facile avec un lien <a href="index.html#login">Connexion</a>. J'ai besoin de quelque sorte de reproduire ce comportement.
Ah ok. Je ne comprends pas votre question de cette façon. Je vais réfléchir un peu à ce sujet. Mais le code ci-dessus va être une partie de la solution pour assurer comme il réplique les navigateurs comportement avec le saut d'ancres.
Juste une théorie. À l'aide de la linkTo helper, en l'orientant vers le IndexRoute et passer un deuxième argument "#login", après le passage de la Route vérifier si le deuxième argument existe et si elle contient un hash, si oui, faites défiler jusqu'à sa position avec le code précédent.
location: 'history'
ne fonctionne pas. - Il encore chomps le hachage. Suivi de la question #4098.OriginalL'auteur
- Je utiliser un composant, qui pourrait également être étendu à l'appui de la requête params par l'intermédiaire d'une action.
C'est comment vous pouvez l'utiliser:
Où
anchor
est#my-id
.Modifier
Voici une braise-cli addon qui fait cela https://www.npmjs.com/package/ember-scroll-to
href
doit être définie. Ensuite, j'ai voulu le contenu pour être porté une fois que c'est fait défiler jusqu'à. Puisque les gens qui naviguent à l'aide du clavier voudrions continuer une fois arrivée à la zone de contenu, au lieu de faire revenir à la dernière concentre l'élément. Voici la modification de composant.que le lien est brisé.
désolé, le dns a été vers le bas 🙁 Devrait être de retour aujourd'hui 🙂
OriginalL'auteur
J'ai eu ce travail dans la Braise avec le action simple approche de kroovy de réponse.
Depuis Braise a changé son API, j'ai dû modifier kroovys approche à peu.
Deux choses ont changé:
Voici comment je l'ai eu à travailler dans la Braise de la Version 1.7.0
Braise Guidon-Modèle nouveau.hbs
Braise App.Contrôleur De NewController.js
OriginalL'auteur