Comment obtenir de l'angulaire de l'interface utilisateur du routeur de l'interface utilisateur-sref de travail, lorsqu'à l'intérieur d'une directive du modèle?
En gros, je suis en train de modifier/personnaliser le comportement de l'interface utilisateur.bootstrap.accordéon. Tout fonctionne, sauf pour l'intégration avec l'interface utilisateur du routeur.
Voici la façon dont je veux utiliser l'accordéon:
<accordion> <!-- this element is actually separate view in a parent state of the accordion-group's below.-->
<accordion-group ui-sref="site.home.newsID_1"> <!-- accordion-groups will be generated with ng-repeat.-->
<accordion-heading>
News 1
</accordion-heading>
<p>This is</p>
</accordion-group>
<accordion-group ui-sref="site.home.newsID_2">
<accordion-heading>
News 2
</accordion-heading>
<p>Home News's</p>
</accordion-group>
<accordion-group ui-sref="site.home.news.newsID_3">
<accordion-heading>
News 3
</accordion-heading>
<p>Preview and navigation</p>
</accordion-group>
</accordion>
Est ci-dessous le modèle modifié de l'accordéon:
<div ng-mouseenter="isOpen = !isOpen" ng-mouseleave="isOpen = !isOpen">
<div class="accordion-group" ng-class="{transparentBackground: isClicked}">
<div class="accordion-heading">
<a id="link" ui-sref="site" class="accordion-toggle" ng-click="isClicked = !isClicked" accordion-transclude="heading">
{{heading}}
</a>
</div>
<div class="accordion-body" collapse="!isOpen && !isClicked">
<div class="accordion-inner" ng-transclude></div> </div>
</div>
</div>
Fondamentalement le site.la maison.newsID_X " besoin de remplacer le 'site' la valeur de ui-sref dans le modèle.
Mon but était de définir la valeur de ui-sref attribut via l'élément " paramètres de la accordionGroup de la directive en fonction de liaison, comme indiqué ci-dessous:
link: function(scope, element, attrs, accordionCtrl) {
element.find('#link').attr("ui-sref", attrs.uiSref)
[...]
}
Ce n'mise à jour de la cible de l'interface utilisateur-sref, mais l'interface utilisateur du routeur ne génère pas de correspondant href de référence de l'état de l'url, donc après le DOM est rendu que j'obtiens
<a ui-sref="site.home.newsID_1" href="#/site"></a>
à la place de l'
<a ui-sref="site.home.newsID_1" href="#/site/home/newsID_1"></a>
Ce qui me manque?
Je vous remercie de votre temps,
Jared
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si c'est nouveau ou pas, mais il existe un moyen de passer des paramètres lors de l'utilisation de l'interface utilisateur-sref.
Dans votre cas, il serait quelque chose comme ceci:
(pour un
site.home.news
état de votre application, avec unnewsID
paramètre dans son URL correspondante, et compte tenu denews.id
points de l'actualité de l'ID dans le courant$scope
)Consultez la documentation ici.
Ok, j'ai résolu mon problème. Il semble que j'étais confus unis avec des url.
Un lien avec l'interface utilisateur-sref va déclencher le changement d'état d'un état donné, et éventuellement modifier/générer l'url, si celle-ci est définie dans l'état. Aussi les états eux-mêmes n'ont pas de paramètres, mais les url n'.
Voici ma compréhension de l'état:
Un état dans l'interface utilisateur du routeur se réfère à un état du site définis dans un modèle html. Ce modèle peut avoir défini l'interface utilisateur-vues, c'est à dire le lieu-titulaires (qui peut être nommé) qui sera remplie par d'autres états. Tout etat peut cibler un ou plusieurs interface utilisateur-vues à l'intérieur d'autres membres de modèle avec des modèles html - dire qu'ils peuvent mettre le contenu de ces modèles dans l'interface utilisateur-points de vue des autres membres de modèles. Chaque état peut être associée à un url, ce qui relie l'url dans le navigateur avec l'état. Si l'url dans le navigateur correspond à l'url associée à un état donné, l'état du site va changer, c'est à dire le nouvel état remplir référencé ui-vues dans un autre etat de modèles, avec les contenus de modèles liés à des points de vue dans l'état actif.
Url hiérarchie des états, mais sont indépendants l'un d'entre eux, de sorte que l'état du site.accueil " peut avoir une url de '/home/contenu", qui sera ajouté à l'url associée à son parent de l'etat ("le site"), sauf s'il est explicitement dit de ne pas.
Donc un changement d'état/transition peut être déclenchée soit par l'interface utilisateur-sref ou en changeant l'url via href lien ou manuellement dans le navigateur de l'utilisateur.
Une autre façon de déclencher le changement d'état interne (pour egz. dans un contrôleur, qui peut également être définis pour chaque état) est d'utiliser le $état.aller(...) de la méthode.
Comprendre cela, j'ai simplement changé l'interface utilisateur-sref références aux href url. Alors que ce n'est pas une solution directe à mon problème, et je ne comprends toujours pas pourquoi l'interface utilisateur du routeur n'est pas génératrice correspondant hrefs, il ne rendre les choses fonctionnent comme prévu. Je suis encore à explorer l'utilisation de $état.go() pour accomplir mon objectif.