Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在需要的地方关闭弹出窗口_Javascript_Html_Angularjs_Bootstrap 4 - Fatal编程技术网

Javascript 如何在需要的地方关闭弹出窗口

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

这里我有一个引导弹出窗口。它工作正常。当我们点击ok按钮时,它将关闭弹出窗口。但我想在特殊情况下关闭弹出窗口

当下列条件满足时,我想关闭已经打开的弹出窗口

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');
   }