2017-06-02 4 views
0

J'ai utilisé ngDialog et j'ai un modal avec des vues imbriquées. Insight mon modal Je passe d'inscription (état) et de connexion (login) donc j'ai besoin d'inclure le contrôleur pour l'inscription et un pour la connexion. J'ai cherché une solution pendant des heures partout mais je n'ai rien trouvé. Est-ce que quelqu'un comment je peux faire ça? Au cas où quelqu'un connaîtrait une solution PAS pour ngDialog mais pour $ modal, s'il vous plaît faites le moi savoir aussi. Merci!!Angular/modal/ngDialog - Comment avoir plusieurs contrôleurs dans un modal avec des états/vues imbriqués/multiples?

$scope.clickToOpen = function() { 
     ngDialog.open({ 
      template: 'js/modal/modal.html', 
      controller: 'SignupCtrl', 
     }); 
    }; 

Dans le code ci-dessus tout fonctionne pour trouver votre inscription parce que j'inclus son contrôleur, mais pas pour la connexion que je ne sais pas comment inclure contrôleur de connexions. Aussi, si c'est important, j'inclurai plus de code - je pensais juste que cela n'avait pas d'importance pour ma question.

Ce que je aussi essayé est ceci:

app.config(function ($stateProvider) { 

    $stateProvider.state('activity.modal', { 
    url: 'modal', 
    templateUrl: 'js/modal/modal.html', 
    views: { 
     '[email protected]': { 
     templateUrl: 'js/login/login.html', 
     controller:'LoginCtrl' 
     }, 

     '[email protected]': { 
     templateUrl: 'js/signup/signup.html', 
     controller:'SignupCtrl' 
     } 
    } 
    }); 

}); 

mais cela ne fonctionne pas, ni pour la connexion, ni pour votre inscription.

Répondre

1

Il existe plusieurs solutions à ce problème. Certains d'entre eux sont meilleurs que d'autres, mais à la fin de la journée, cela dépend du type d'interface utilisateur/UX que vous recherchez.

un dialogue avec les contrôleurs fusionnés (sans doute la pire approche)

Vous pouvez utiliser une seule boîte de dialogue avec un seul modèle, mais vous devez fusionner les contrôleurs ensemble de sorte que le nouveau contrôleur peut gérer à la fois connexion et vous inscrire logique.

Deux Dialogs

Vous pouvez ouvrir différentes fenêtres pop-up ngDialog - un pour la connexion d'un autre pour votre inscription. Ceux-ci seraient déclenchés par différents boutons dans votre vue. Par exemple avec deux boutons (Connexion et Inscription) où le bouton de connexion affiche la boîte de dialogue de connexion et le bouton d'inscription la boîte de dialogue d'inscription.

Composants Utilisation dans votre boîte de dialogue (sans doute la meilleure approche)

Vous pouvez un exemple et un ngDialog dans le modèle, vous pouvez utiliser deux composants différents - un pour la connexion et un pour votre inscription. Chaque composant aurait son propre gabarit et contrôleur séparé et donc la règle de séparation des préoccupations s'applique toujours. L'avantage supplémentaire de la dernière approche est que vous pouvez utiliser ces composants n'importe où sur votre site Web, et pas seulement le modèle ngDialog.

+0

Merci pour votre réponse. Les deux dialogues différents sont ce que j'avais au début, car c'était la seule chose qui pouvait marcher, mais ça n'a pas l'air "bon" alors je l'ai enlevé. Je l'ai fait fonctionner en donnant à l'état modal deux vues imbriquées et en assignant à chacune un contrôleur différent. – javascripting

+0

C'est à peu près la même solution que celle que j'ai suggérée avec les composants, mais en utilisant des vues. L'architecture des composants est préférée de nos jours, mais je ne pense pas que cela soit trop important dans ce cas. –

+0

C'est une question un peu différente, mais peut-être savez-vous. Comment puis-je faire en sorte que ngDialog ne change pas d'état quand il affiche les vues imbriquées? En ce moment tout fonctionne mais je veux seulement que le modal se chevauche quelle que soit la page sur laquelle je suis actuellement (je peux utiliser le modal à partir de plusieurs endroits) et non il change l'url et me dirige vers une autre page.Ce que j'ai vu en ligne est de donner l'url '^ /' mais ça ne marche pas – javascripting