编程语言
首页 > 编程语言> > javascript – 如何使用Factory关闭mouseleave上的Angular-ui-bootstrap uibModal?

javascript – 如何使用Factory关闭mouseleave上的Angular-ui-bootstrap uibModal?

作者:互联网

我最近在我们的应用程序中将所有模态指令切换到Angular-ui-Bootstrap模态.好多了,但是遇到了一种新的模态,它在mouseleave上关闭而不是取消点击.

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

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

上面是调用TagHover Factory内部函数的视图逻辑.

下面是Factory,TagHover.display与我们的其他模态一样正常,但是我正在尝试使用leaveTag> TagHover.off调用modal.close.到目前为止没有工作.

我的问题是你如何在TagHoverController中调用close函数,或者从我的tagsPanel组件中关闭$uibModal – > TagsHover工厂? (不使用$scope或$rootScope事件)

我不是试图在TagHover Ctrl范围内调用close / cancel,而是尝试从Parent范围调用close.

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;

enter image description here

这是文档https://angular-ui.github.io/bootstrap/#/modal

The open method returns a modal instance, an object with the following properties:

close(result) (Type: function) – Can be used to close a modal, passing a result.

我还注销了$uibModal对象,我只看到一个打开的函数,没有关闭:(

enter image description here

解决方法:

这是错误的方法 – 你不能“只关闭模态”,因为你不知道要关闭哪个模态.我建议你重新设计一下……

你可以看看$uibModalStack – 它存储打开的模态并有像dismisAll这样的方法

标签:javascript,angularjs,angularjs-service,angular-ui,angular-ui-bootstrap
来源: https://codeday.me/bug/20190712/1441433.html