gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:01 25 4
gpt4 key购买 nike

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

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

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

以上是调用 TagHover 工厂内部函数的 View 逻辑。

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

我的问题是如何调用 TagHoverController 中的关闭功能,或者如何从我的 tagsPanel 组件 -> TagsHover Factory 调用 $uibModal 上的 close? (不使用 $scope 或 $rootScope 事件)

我不是试图从 TagHover Ctrl 范围内调用 close/cancel,而是尝试从父范围调用 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

最佳答案

在您的情况下,您正在使用 Factory 实现动态模态。所以你可以通过以下两种方式使用$uibModalStack

  1. $uibModalStack.dismissAll();//关闭所有打开的模式
  2. $uibModalStack.dismiss(openedModal.key);//按键关闭模态

解雇方法示例。

var top = $uibModalStack.getTop();
if (top) {
$uibModalStack.dismiss(top.key);
}

It's very important to do dismissing the modal during router changes since its dynamic modal.

一般情况下,$uibModal 会帮助打开模态然后每个模态都是$uibModalInstance,如果你想在模态里面关闭模态。

事件打开模式

angular.module('myPage')
.controller('PageController', ['$uibModal',
function($uibModal) {
function onModalLink() {
$uibModal.open({
templateUrl: 'app/modals/paymentTpl.html',
controller: 'PaymentModalController as vm',
windowClass: 'generalModal myModal'
});
}
}
]);

从实例关闭。

angular.module('paymentModal')
.controller('PaymentModalController', [
'$uibModalInstance',
function ChangeRepaymentController($uibModalInstance) {
function onCancel() {
$uibModalInstance.close(repaymentPercentage);
}
}
]);

modalInstance - The modal instance. This is the same $uibModalInstance injectable found when using controller.

维基引用:https://github.com/angular-ui/bootstrap/tree/master/src/modal/docs

关于javascript - 如何使用 Factory 在 mouseleave 上关闭 Angular-ui-bootstrap uibModal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41334140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com