6
votes

Comment puis-je ajouter une boîte de dialogue modale réutilisable en angulaire?

Je suis nouveau dans l'angulaire et tenter de mettre en œuvre cette solution dans mon projet.

Il a l'air douloureusement facile, cependant, j'essaie de faire cela dans un élément réutilisable afin que je puisse l'appeler de n'importe où et simplement transmettre le contenu à afficher (sinon, quel est le point?). < / p>

Alors, ma question spécifique est la suivante: supposer que j'ai déjà un contrôleur qui est lié à un élément DOM et qu'il a une fonctionnalité qui va et récupère des usine > $ http appelez et sur la réponse, je souhaite informer l'utilisateur via cette boîte de dialogue de quelque chose, comment puis-je combiner * cette directive et * ce contrôleur avec mon existant et comment puis-je le faire d'une manière qui permet moi ensuite l'utiliser à nouveau à partir d'un contrôleur totalement différent ?

ou est-ce peut-être un mauvais exemple pour cette utilisation et dois-je regarder un autre?


0 commentaires

3 Réponses :


2
votes

essayer d'utiliser ' bibliothèque NGDialog ' pour popup et modal. Très bonne bibliothèque. Plus tard, vous pouvez créer un service qui appelle en interne NGDialog Fonctions. Plus tard, ce service peut être injecté dans vos contrôleurs à utiliser. J'ai mis en œuvre cela dans un seul projet.

La fonction des services peut accepter des paramètres pour initialiser le modal NGDialog.

espère qu'il aide :)


2 commentaires

Wow ... c'est absolument la voie à suivre! :-) Aucune idée de quelles sont les limitations, et je voudrais finalement obtenir la réponse à cette question spécifiquement (à propos de créer des éléments universellement accessibles), mais merci beaucoup pour cette pointe, une bibliothèque très utile.


Je n'utiliserais pas la bibliothèque 'Ngdialog' pour des fenêtres complexes. Cela ne permet pas de glisser et de redimensionnement. Dans mon projet, il a cassé l'animation. Parfois, il arrête de répondre à des clics sur des boutons jusqu'à ce que les recharges de la page du navigateur.



1
votes

Pour ce faire mieux, je vous suggère de modifier le code pour regarder quelque chose ci-dessous

Modèle: strong> p>

<modal-dialog modal-content='modalMsg' width='750px' height='90%'></modal-dialog>


3 commentaires

Merci. Ma confusion tourne autour de la manière de rendre ce code universellement accessible à n'importe quel contrôleur. Comment puis-je lier cette directive à «SomalbatiraryController» et où dans le DOM, définissez-moi le et associé

s ? J'ai mes modèles de contrôleur sous forme de fichiers HTML distincts qui sont acheminés vers. Mon désir est de pouvoir appeler cette directive de n'importe où ... Est-ce que cela a du sens?


doit faire partie de chaque modèle qui nécessite une fenêtre modale, puis vous pouvez définir le texte (dans la variable utilisée pour modalcontent ) de son manette. Vous n'avez pas besoin de lier un contrôleur supplémentaire avec cela. Je ne suis pas sûr à 100% mais je suppose que vous recherchez quelque chose comme NG-Dialog comme dans les commentaires de max. Si tel est ce que vous avez besoin que vous souhaitez créer votre propre fournisseur docs.angularjs.org/guide/providers < / a> (en utilisant votre lien comme référence). Même chose est fait pour NG-Dialog


Oui, je crois que mon propre fournisseur est le seul moyen de le rendre universel. Je commence à envelopper ma tête autour de cela maintenant ... (lentement)



8
votes

Comparé à d'autres options, ci-dessous compte tenu de l'approche minimaliste, en utilisant une usine forte> angulaire forte>. Voir un échantillon d'échantillon ci-dessous.

Note forte>: Utilisation de JS angulaires avec UI Bootstrap - Angularui. P>

  1. Vue modale réutilisable - confirmationbox.html strong> li> ol>

    p>

    var myModule = angular.module("mymodule", ['sharedmodule', 'ui.bootstrap', 'ui.bootstrap.tpls']);
    
    myModule.controller('myController', ["$scope", "sharedService", "$window",
    function ($scope, sharedService, $window)
    {
        $scope.showConfirm = function ()
        {
            sharedService.showConfirmDialog(
                'Confirm!',
                'Any unsaved edit will be discarded. Are you sure to navigate back?')
                .then(function ()
                {
                    $window.location = '#/';
                },
                function ()
                {
                });
        };
    }]);


0 commentaires