2017-09-13 1 views
1

Je souhaite utiliser Angular pour rendre les portlets Liferay dans la même page. Chaque portlet est codé séparément, j'ai réussi à faire fonctionner plusieurs instances angulaires en parallèle. Maintenant, j'ai portletid1 et portletid2 à l'intérieur de la même page, chaque portlet est une application angulaire séparée et a des routes distinctes. Je veux chaque portlet pour écouter ses événements de changement de hachage séparément On peut imaginer l'URL être comme celui-ci par exemple: https://myportal/page#portletid1:/login;portlet2:/route2 Est-il possible de laisser l'application angulaire sur portlet 1 écouter portletid1: route_of_portlet_1 et garder portlet 2 écoute à portletid2: route_of_portlet_2?Personnaliser le routage angulaire pour plusieurs instances angulaires dans la même page

J'utilise angulaire 2.

+0

pas sûr à propos du portlet mais si vous voyez le loadChildren dans l'itinéraire, il charge dynamiquement le module et son composant. –

Répondre

0

Je n'ai pas l'expérience avec angulaire, mais récemment un angular sample project a été ajouté à des échantillons de lame Liferay, ce qui pourrait soit faire ce que vous voulez ou peut-être trop simple - s'il vous plaît valider ceci sur votre propre.

Il est sans doute trop de copier l'échantillon complet ici, mais notez les valeurs magiques utilisées dans les vues:

bnd.bnd déclare Web-ContextPath: /angularjs-simple-portlet, qui est utilisé dans view.jsp.

Le portlet lui-même, sans beaucoup de code, déclare javax.portlet.name=AngularJSSimplePortlet (je me suis permis de résoudre la constante), qui est ensuite visé à l'app.js, ainsi que le Web-ContextPath d'en haut.

Je vous laisse le soin d'essayer si cela répond à vos besoins ou si vous avez besoin de quelque chose de plus automatique. Gardez à l'esprit que le code js n'est pas traité côté serveur. Vous pouvez faire plus de traitement côté serveur si vous avez des JSP qui livrent votre code JS - mais ce n'est généralement pas ce que les gens recherchent.