Bonjour à tous !
Aujourd'hui c'est partie pour un petit peu d'Angular JS.

Je recontre actuellement avec mon équipe de développement un petit soucis concernant les StateProviders. En effet nous aimerions utiliser ces config pour charger notre template. Aucun soucis pour cela ca fonctionne :

.config(function ($stateProvider) {
            $stateProvider.state('main.savedQuotes', {
                url: 'nameUrl',
                templateUrl: 'templateAdresse',
                controller: 'controllerName',
                controllerAs: 'CtrlName'
            });
      })

Le problème c'est que une fois ce template charger nous aimerions avoir un autre systéme de template a l'intérieur dépendant de cette configuration.

Une configuration à deux niveau en somme avec un chargement du 1er controller "controllerName" et une fois celui la charger un deuxième système en interne avec le controllerEnfant "controllerEnfant".

J'ai testé beaucoup de chose mais rien de fonctionnel pour l'instant si vous avez une idée ou des pistes de recherche en attendant je suis preneur.

Merci

5 réponses


Polaris
Auteur
Réponse acceptée

Non il faut justement supprimer les NG-Controller. J'ai trouvé la solution , il faut bien specifier les parents et attacher la config a chaque controller. Pour plus de lisibilité chaque fichier de controller posséde sa propre route à l'intérieur comme présenté.

exemple :

angular.module("quotation-process.request-demo", [])
   .config(function ($stateProvider) {
       $stateProvider.state("main.child", {
           url: "/request-demo",
           templateUrl:"template.tpl.html",
           controller: "controllerChild",
           controllerAs:"ctrlChild",
           parent:"main" /*state*/
       });
   })
   .controller("controllerChild", function ( ) {

  });

sur le code HTML que tu charge tu met un ng-controller ça n'irait pas comme solution ?

Polaris
Auteur

En faite non car si je place des configProvider a l'interieur c'est comme si c'était le config principal qui était changé .
Je voudrais pouvoir changer dynamiquement l'url avec un template principal puis sous template

genre /maison/chambres

Pour l'instant c'est tous ou rien .. sois maison soit chambres --"

En pour le template j'ai ça

<div>
  <div ng-include="'app/components/navbar/navbar.html'"></div>

  <div ui-view></div>

  <div ng-include="'app/components/footer/footer.tpl.html'"></div>
</div>

le controller principal et ça vus sont charger dans le ui-view
à l'intérieur de celui la j'ai un autre ui-view qui celui doit changer en function de la seconde partie de l'url via le stateProvider

Alors peut être tu devrais jeter un oeil à https://github.com/angular-ui/ui-router qui propose des state/ sous state, car tu rencontre un problème que j'avais au début avec le Router d'angular qui est trèèèès limité ^^.

Polaris
Auteur

En faite c'est déjà ce qui est utilisé :D on va fouiller la doc plus prondéfement dans les confins de l'internet ...