Javascript 如何在需要的地方关闭弹出窗口
这里我有一个引导弹出窗口。它工作正常。当我们点击ok按钮时,它将关闭弹出窗口。但我想在特殊情况下关闭弹出窗口 当下列条件满足时,我想关闭已经打开的弹出窗口Javascript 如何在需要的地方关闭弹出窗口,javascript,html,angularjs,bootstrap-4,Javascript,Html,Angularjs,Bootstrap 4,这里我有一个引导弹出窗口。它工作正常。当我们点击ok按钮时,它将关闭弹出窗口。但我想在特殊情况下关闭弹出窗口 当下列条件满足时,我想关闭已经打开的弹出窗口 if(x==y){ $uibModalInstance.close(); } 但它并没有关闭弹出窗口。我在控制台上遇到以下错误 ReferenceError:$uibModalInstance未定义 JSP:- <script type="text/ng-template" id="myModalContent.html"&g
if(x==y){
$uibModalInstance.close();
}
但它并没有关闭弹出窗口。我在控制台上遇到以下错误
ReferenceError:$uibModalInstance未定义
JSP:-
<script type="text/ng-template" id="myModalContent.html">
<div class="modal-header">
<h3 class="modal-title" id="modal-title">{{ctrl.modalHeader}}</h3>
</div>
<div class="modal-body" id="modal-body">
{{ctrl.modalBody}}
<ul ng-repeat="item in ctrl.list">
<li ng-repeat="(key,value) in item">{{value}}</li>
</ul>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" ng-click="ctrl.ok()">OK</button>
<!--<button class="btn btn-warning" type="button" ng-click="ctrl.cancel()"><spring:message code="label.close"/></button>-->
</div>
</script>
<script src="js/commons/ui-bootstrap-tpls-2.4.0.js"></script>
您试图在弹出窗口打开之前关闭它,因此在调用此打开方法时出现此错误?使用模式实例关闭模型
if(x==y){
$scope.modalInstance.close();
}
$scope.open = function() {
$scope.modalInstance = $uibModal.open({....
您已将
$uibModalInstance
注入模态控制器,但尚未对facilitoController
执行此操作。您必须注入它才能像这样访问它:app.controller('facilitoController',function($scope、$window、$filter、$uibModal、$uibModalInstance){…})代码>
更新:我的第一个假设是不正确的,因为$uibModalInstance
是一个本地的,而不是一个正常的可注入的。因此,您只需将其注入facilitoController
。由于open
方法返回一个模态实例,您可以将其分配给局部变量,然后在需要时手动关闭它。请注意:在初始化实例并在$scope.open方法中打开弹出窗口之前,您无法关闭它
请看一个工作示例,如果弹出窗口在以下时间之前打开,它将在控制器初始化后5秒内关闭弹出窗口:
angular.module('App',['ui.bootstrap']))
.controller('facilitoController',函数($scope、$window、$filter、$uibmodel、$timeout){
var modalHeader=“Test modalHeader”,modalBody=“Test modalBody”;
var modalInstance=null;
$scope.open=function(){
modalInstance=$uibModal.open({
ariaLabelledBy:“模态标题”,
由“模态体”描述,
templateUrl:'myModalContent.html',
控制器:函数($uibModalInstance){
var self=这个;
self.modalHeader=modalHeader;
self.modalBody=modalBody;
self.list=[{},{}];
self.ok=函数(){
$uibModalInstance.close();
};
self.cancel=函数(){
$uibModalInstance.discover('cancel');
};
},
controllerAs:'ctrl'
});
}
$timeout(函数(){
if(modalInstance)modalInstance.close();
}, 5000);
});代码>
打开
{{ctrl.modalHeader}}
{{ctrl.modalBody}}
- {{value}
好啊
使用
对如果我打开,那么它将打开另一个弹出窗口,即使我们想要打开该弹出窗口,它也不会关闭,那么我将调用打开函数它给出一个错误未知提供程序:$uibModalInstanceProvider angular.min.js:118 TypeError:Cannot read undefinedit的属性“close”不允许var$scope.modalInstance=Inject$uibModalInstance in你的控制器(第三行)的依赖性我也这样做了。如果我这样做,我会得到未知的提供者:$uibModalInstanceProvider很好的答案。。。找到了同样的
if(x==y){
$scope.modalInstance.close();
}
$scope.open = function() {
$scope.modalInstance = $uibModal.open({....
if(condition){
$('#modal_id').modal('hide');
}