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;
这是文档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对象,我只看到一个打开的函数,没有关闭:(
解决方法:
这是错误的方法 – 你不能“只关闭模态”,因为你不知道要关闭哪个模态.我建议你重新设计一下……
你可以看看$uibModalStack – 它存储打开的模态并有像dismisAll这样的方法
标签:javascript,angularjs,angularjs-service,angular-ui,angular-ui-bootstrap 来源: https://codeday.me/bug/20190712/1441433.html