angular-ui bootstrap $modal de service à l'aide de la directive au lieu

Les exemples que je vois de l'aide angular-ui/bootstrap est $modal toujours ressembler à quelque chose comme ceci:

    $modal.open({
        templateUrl: 'modaltemplate.html',
        controller: function($scope) {
            ...
        }
    });

Que faire si je veux utiliser une directive, à la place? Comme ceci:

    $modal.open({
        template: '<my-modal-directive></my-modal-directive>'
        //no "controller" property; use directive's controller
    });

Le balisage de my-modal-directive rend très bien, et j'ai déplacé le controller la propriété dans le my-modal-directive définition de l'objet, mais maintenant cette erreur de la my-modal-directive:

Error: [$injector:unpr] Unknown provider: $modalInstanceProvider <- $modalInstance

Quelqu'un peut-il m'indiquer un exemple où $modal utilise une directive, lorsque cette directive définit le controller?

Par exemple, ce qui fonctionne, où j'ai remplacé le templateUrl avec une directive:

http://plnkr.co/edit/YrGaF83GH6bzZPRR55GK?p=preview

Mais quand je bouge la manette à partir de $modal.open() dans la directive, c'est lorsque l'erreur se produit:

http://plnkr.co/edit/aLBT239EpL004DRh4jll?p=preview
Êtes-vous à l'aide de $modal à l'intérieur de ladite directive ou de contrôleur?
À l'aide de $modal dans le contrôleur qui lance le modal. À l'aide de $modalInstance dans le my-modal-directive's contrôleur. 🙂
Je ne comprends pas pourquoi u pense que c'est possible et pourquoi u besoin. L'ajout de la directive modal (1ère étape) est clair et ordinaire, mais la 2ème?
Que Sergiu points, angular-ui bootstrap utilise un impératif approche. La définition d'un modèle et contrôleur inline avec $modal.open() contre l'encapsulation de ce qui est ouvert dans une directive unique n'est pas une bonne conception. Vous avez fragmenté que le modal est par le casser en deux morceaux séparés--un modèle, et un contrôleur. L'Encapsulation est un meilleur modèle que la composition dans ce cas, à mon avis. À l'aide d'une directive qui est un composant (c'est à dire isoler portée, modèle, contrôleur de tous dans la directive définition) pour le modal pour le lancement, doit être privilégiée.

OriginalL'auteur core | 2015-02-18