Comment fermer une Angular-ui-bootstrap uibModal sur mouseleave à l'aide de l'Usine?

J'ai récemment changé toutes nos auxiliaires modaux directives dans notre application sur Angular-ui-Bootstrap auxiliaires modaux. Beaucoup mieux, mais en cours d'exécution dans un nouveau style de modal qui se referme sur mouseleave au lieu de cliquez sur annuler.

this.leaveTag = (tag) => {
    TagHover.off();
};

this.hoverTag = (tag) => {
    TagHover.display();
};

Ci-dessus est la logique de la vue qui appelle des fonctions à l'intérieur de notre TagHover Usine.

Ci-dessous est l'Usine, le TagHover.l'affichage fonctionne très bien comme avec nos autres auxiliaires modaux, mais ce que j'essaie de faire avec le leaveTag > TagHover.off est appel modal.de près. Ne fonctionne pas si loin.

Ma question est comment appelez-vous les fermez la fonctionnalité au sein de la TagHoverController, ou close sur l' $uibModal de mon tagsPanel composant -> TagsHover Usine? (Sans l'aide de $portée ou $rootScope événements)

Je ne suis pas en train d'appeler close/cancel de l'intérieur de la TagHover Ctrl portée, mais en essayant d'appeler close d'un Parent.

const TagHover = angular.module('tickertags-shared')
    .controller('TagHoverController', TagHoverController)
    .factory('TagHover', factory);

TagHoverController.$inject = [
    'TagHover'];

function TagHoverController(
    TagHover) {

    this.$onInit = () => {
        console.log('TagHover onInit')
    };

    this.cancel = () => this.$close();
}

factory.$inject = ['$uibModal'];

function factory($uibModal) {

    const display = () => {
        const modal = $uibModal.open({
            controllerAs: 'tghov',
            bindToController:true,
            templateUrl: 'tags/tag_hover.html',
            windowClass: 'dash-modal',
            resolve: {},
            controller: 'TagHoverController'
        });
    };

    const off = () => {
        $uibModal.close({});
    };

    return {
        display,
        off
    }
}

module.exports = TagHover;

Comment fermer une Angular-ui-bootstrap uibModal sur mouseleave à l'aide de l'Usine?

Voici les docs https://angular-ui.github.io/bootstrap/#/modal

La méthode ouverte retourne un modal exemple, un objet avec les propriétés suivantes:

proche(suite) (Type: fonction: Peut être utilisé pour fermer la modale, en passant d'un résultat.

J'ai aussi déconnecté de la $uibModal objet et je ne vois qu'une fonction d'ouverture, pas de fermeture 🙁

Comment fermer une Angular-ui-bootstrap uibModal sur mouseleave à l'aide de l'Usine?

Utiliser $uibModalInstance.close() au lieu de $uibModal.close()
Hmm, j'ai juste essayé... j'ai injecté $uibModalInstance, mais il a obtenu Inconnu fournisseur de 🙁

OriginalL'auteur Leon Gaban | 2016-12-26