首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有没有办法在一个控制器中使用$uibModal和$uibModalInstance来使用angular和typescript实现模式弹出?

有没有办法在一个控制器中使用$uibModal和$uibModalInstance来使用angular和typescript实现模式弹出?
EN

Stack Overflow用户
提问于 2016-07-15 06:05:30
回答 2查看 38.2K关注 0票数 6

问题是我有一个下拉列表,我必须在该下拉菜单上打开一个模式弹出窗口,该模式弹出窗口将有两个按钮“是”或“否”。为此,我有一个控制器,其中我注入了一个依赖项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class QuestionnaireController {
    static ngControllerName = 'questionnaireController';
    static inject = ["$uibModal"];
    constructor(private $uibModal: ng.ui.bootstrap.IModalService) {
    }
     public openModalPopup() {
        let options: ng.ui.bootstrap.IModalSettings = {
            controller: QuestionnaireController,
            controllerAs:'ctrl',
            templateUrl: 'app/views/Dialogbox.html',

        };
      this.$uibModal.open(options);

    }
}

我的大部分代码是用'QuestionnaireController‘编写的,弹出窗口是用这个控制器打开的,但我也想关闭这个弹出窗口,所以我读了一篇文章,里面写着我必须创建一个新的控制器"ModalController“来关闭弹出窗口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class ModalController {
    static inject = ["$uibModalInstance"];
    constructor(private $uibModalInstance: ng.ui.bootstrap.IModalServiceInstance) {
    }
    public close() {
        this.$uibModalInstance.close();
    }
}
Popup code is here...

<div ng-app="" id="dvModal">
<div class="modal-header">

</div>
<div class="modal-body">
    <p> Evaluated result will be discarded if you continue. Are you sure you want to continue?</p>
</div>
<div class="modal-footer">
    <input id="yesBtn" type="button" class="btn btn-default" ng-click="ctrl.Yes('true')" value="Yes" />
    <input id="npBtn" type="button" class="btn btn-default" ng-click="ctrl.close()" value="No" />
</div>

并关闭此传递的控制器:在选项中的ModalController,它使我的弹出窗口在单击"No“时关闭。但现在问题产生了,我如何再次转到" QuestionnaireController“来执行”是“功能,因为”是“功能是用QuestionnaireController编写的。

EN

回答 2

Stack Overflow用户

发布于 2016-07-15 11:04:19

可以,停那儿吧!

$uibModal是一款超级灵活的工具。

我对Typescript不是很熟悉,但这是我的JS解决方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
angular
.module('appName', ['ui.bootstrap'])
  .controller('SomePageController', ['$scope', '$uibModal', '$log',
    function ($scope, $uibModal, $log) {

您首先要做的是更改openModalPopup()方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    // Instantiate the modal window
    var modalPopup = function () {
      return $scope.modalInstance = $uibModal.open({
        templateUrl: 'blocks/modal/dialog.html',
        scope: $scope
      });
    };

    // Modal window popup trigger 
    $scope.openModalPopup = function () {
      modalPopup().result
        .then(function (data) {
          $scope.handleSuccess(data);
        })
        .then(null, function (reason) {
          $scope.handleDismiss(reason);
        });
    };

    // Close the modal if Yes button click
    $scope.yes = function () {
      $scope.modalInstance.close('Yes Button Clicked')
    };

    // Dismiss the modal if No button click
    $scope.no = function () {
      $scope.modalInstance.dismiss('No Button Clicked')
    };

    // Log Success message
    $scope.handleSuccess = function (data) {
      $log.info('Modal closed: ' + data);
    };

    // Log Dismiss message
    $scope.handleDismiss = function (reason) {
      $log.info('Modal dismissed: ' + reason);
    }

  }
]);

第二模式窗口HTML模板将如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script type="text/ng-template" id="blocks/modal/dialog.html">
    <div class="modal-header">
      <h3 class="modal-title">I'm a modal!</h3>
    </div>
    <div class="modal-body">
      Modal content
    </div>
    <div class="modal-footer">
      <button class="btn btn-primary" type="button" ng-click="yes()">Yes</button>
      <button class="btn btn-warning" type="button" ng-click="no()">No</button>
    </div>
  </script>

第三-非常简单的视图HTML(在您的案例中- Questionnaire) SomePage示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div ng-controller="SomePageController">
  <button type="button" class="btn btn-default" ng-click="openModalPopup()">Open modal</button>
</div>

总而言之:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
angular
  .module('appName', ['ui.bootstrap'])
  .controller('SomePageController', ['$scope', '$uibModal', '$log',
    function($scope, $uibModal, $log) {

      $scope.modalPopup = function() {
        modal = $uibModal.open({
          templateUrl: 'blocks/modal/dialog.html',
          scope: $scope
        });

        $scope.modalInstance = modal;

        return modal.result
      };


      $scope.modalPopupTrigger = function() {
        $scope.modalPopup()
          .then(function(data) {
            $scope.handleSuccess(data);
          },function(reason) {
            $scope.handleDismiss(reason);
          });
      };

      $scope.yes = function() {
        $scope.modalInstance.close('Yes Button Clicked')
      };

      $scope.no = function() {
        $scope.modalInstance.dismiss('No Button Clicked')
      };

      $scope.handleSuccess = function(data) {
        $log.info('Modal closed: ' + data);
      };

      $scope.handleDismiss = function(reason) {
        $log.info('Modal dismissed: ' + reason);
      }

    }
  ]);
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>

<head>
  <link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
</head>

<body ng-app="appName">
  <div ng-controller="SomePageController">
    <script type="text/ng-template" id="blocks/modal/dialog.html">
      <div class="modal-header">
        <h3 class="modal-title">I'm a modal!</h3>
      </div>
      <div class="modal-body">
        Modal content
      </div>
      <div class="modal-footer">
        <button class="btn btn-primary" type="button" ng-click="yes()">Yes</button>
        <button class="btn btn-warning" type="button" ng-click="no()">No</button>
      </div>
    </script>

    <button type="button" class="btn btn-default" ng-click="modalPopupTrigger()">Open modal</button>
  </div>

  <script src="https://code.angularjs.org/1.5.7/angular.min.js"></script>
  <script src="https://code.angularjs.org/1.5.7/angular-animate.min.js"></script>
  <script src="https://raw.githubusercontent.com/angular-ui/bootstrap-bower/master/ui-bootstrap-tpls.min.js"></script>



</body>

</html>

票数 12
EN

Stack Overflow用户

发布于 2016-09-05 20:06:28

好吧,如果你是像我一样的懒汉,下面的方法也可以;)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var objects = [{
 name: "obj1",
 value: 1
}, {
 name: "obj2",
 value: 2
}];

// Generating the modal html

var html = "<div class='modal-header'><h4 class='modal-title'>Select Object</h4></div>";
html += "<div class='modal-body'>";
html += "<select class='form-control' ng-model='selection'>";
for (var i = 0; i < objects.length; i++) {
 var ob = objects[i];
 html += "<option value='" + ob.value + "'>" + ob.name + "</option>";
}
html += "</select>";
html += "</div>";
html += "<div class='modal-footer'>";
html += '<button type="button" ng-click="dismissModal()" class="btn btn-default" >Close</button>';
html += '<button type="button" ng-click="closeModal()" class="btn btn-primary">Select</button>';
html += "</div>";

// Showing the modal

var objectSelectionModal = $uibModal.open({
 template: html,
 controller: function($scope) {

  // The function that is called for modal closing (positive button)

  $scope.closeModal = function() {
   //Closing the model with result
    objectSelectionModal.close($scope.selection);

  };

  //The function that is called for modal dismissal(negative button)

  $scope.dismissModal = function() {
   objectSelectionModal.dismiss();
  };

 }


});

//Processing the Result
objectSelectionModal.result.then(function(selected) {
 alert(selected);

});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38388911

复制
相关文章
Mac 全栈开发-StrongLoop
StrongLoop 是 IBM的一家子公司,StrongLoop API Platform构建于开源的LoopBack.io之上,LoopBack是一个高度可扩展的Node.js API框架。借助于LoopBack,我们可以快速创建可扩展的API和数据库映射。
用户1065635
2019/03/21
1.5K0
堡垒机远程不上服务器的原因 连接不上怎么办?
堡垒机对于企业的运维系统的安全审计,和管理控制功能是显而易见的,堡垒机也成了许多的大中小型企业必备的网络服务项目之一,但是在使用堡垒机的过程当中,总是会出现一些操作上的问题以及使用中的问题。出现这些问题要及时解决,否则会给堡垒机的作用带来不好的影响,堡垒机远程不上服务器是怎么回事呢?
用户8715145
2021/12/11
14.2K0
远程时,你的分辨率低于A×B,某些项目可能无法在屏幕上显示
推荐远程软件multidesk,可以时远程时的分辨率自适应窗口大小,最大可以屏幕那样大,其他的看你把multidesk的窗口调多大,调好窗口大小后重连就会填满整个窗口,用mstsc有个弊端在这里有提到
Windows技术交流
2021/09/01
4K0
Dbeaver连接不上远程服务器部署的Clickhouse问题
1、Clickhouse连接端口默认8123,但是Clickhouse默认情况下不允许其他设备进行http连接,所以需要更改clickhouse的默认配置:
别先生
2021/03/02
13K0
Dbeaver连接不上远程服务器部署的Clickhouse问题
linux远程ssh连接不上?
昨天下午从公司下班回到家后,想连接linux来给一个docker项目部署好,发现突然连接不上了?
废江_小江
2022/09/05
22.4K0
linux远程ssh连接不上?
windows server 系统远程不上怎么处理?
Windows Server系统远程不上可能有多种原因,以下是一些常见的原因及处理方法:
会长君
2023/04/26
3.5K0
解决redis远程连接不上的问题
redis现在的版本开启redis-server后,redis-cli只能访问到127.0.0.1,因为在配置文件中固定了ip,因此需要修改redis.conf(有的版本不是这个文件名,只要找到相对应的conf后缀的文件即可)文件以下几个地方。
人生不如戏
2018/09/27
14.6K0
在 Windows 系统上启用远程应用
需要一个远程桌面 App 进行演示, 安装 Windows 远程桌面服务太折腾, 需要安装域控制器, 再部署一整套的远程服务, 太折腾了, 如果只是演示的话, 没必要那么折腾。
beginor
2020/08/07
3.4K0
redis 本地连接可以 远程连接不上问题
4.protected-mode yes 改为 protected-mode no(redis3.2版本以后)
全栈程序员站长
2022/07/08
7.9K0
将jpeg图片显示在framebuffer上
点击(此处)折叠或打开 /************************************************** * example5.c * Author: T-bagwell * * Compile:gcc -Wall example5.c -o example5 *************************************************/ #include <stdio.h> #inclu
用户3765803
2019/03/05
1.2K0
远程服务器虚拟显示器配置方法选择_自建远程桌面服务器
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171793.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
1.7K0
云游戏连接不上服务器是什么原因?云游戏连接不上服务器怎么处理?
现在的年轻人对于网络游戏都是非常热衷的,在学习或者工作休闲之余玩上两把游戏可以充分放松自己的心情以及压力,也是因此现在网络游戏越来越盛行,游戏虽然有很多弊端但是也是有很多好处的,不然国家也不会放任游戏产业不管了。想要玩游戏就需要拥有设备,比如常用的手机或者电脑都可以玩各种游戏,现在还推出了云游戏平台,不需要高配置的设备就可以轻松玩转大型游戏,那么云游戏连接不上服务器是什么原因?云游戏连接不上服务器怎么处理?
用户8715145
2021/10/22
10K0
系统权限远程线程注入到Explorer.exe
我们上一面说了系统服务拥有系统权限.并且拥有system权限.还尝试启动了一个进程. 那么我们是不是可以做点坏事了. 我们有一个系统权限进程.而调用 CreateRemoteThread可以创建远程线程,是否可以注入到我们桌面资源管理器当中那. 答案是可以的.我也试过提权的方式注入.可惜都是拒绝访问.所以我提升为system权限(系统服务,创建的我们进程就是system权限) 然后进行注入的.最后是可以注入的. 我们资源管理器是64位的,所以我们的进程需要也是64.我们的DLL 也要64.当然网上很多32进程注入DLL到64位各种都很多. 这里为了方便.直接 64进程+64DLL进行注入的. 代码如下:
IBinary
2019/05/25
1.1K0
在Pod中开启Loopback网卡的组播功能
最近有业务的容器需要在Kubernetes上运行ROS2,由于ROS2的DDS(Data Distribution Service,数据分发服务)的通讯框架采用了组播的方式将消息分发给订阅者节点以提高效率。所以如果在一个 kubernetes 集群中部署多套ROS2,就会导致在ROS2之间的数据出现串流的情况。解决这个问题,我们需要将组播数据路由到本地的loop回环网卡上。研究了下在Kubernetes CNI中默认插件中的loopback是没有这个支持的。要解决这个需求,需要简单小改下cni 的 loopback 插件,让其在为pod创建loop网卡时,将组播地址224.0.0.0转到的loop网卡。在开始前,我们还是有必要回顾学习下相关的知识。
云原生小白
2023/08/28
5200
在Pod中开启Loopback网卡的组播功能
远程监控摄像头在流媒体服务器显示无视频信号?
在显示器正常的情况下,远程监控摄像机在流媒体服务器画面显示“无网络视频”,通常是由于摄像机的供电异常、网线不通、密码设置、IP地址冲突等四点问题造成的。
EasyNVR
2020/04/23
1.6K0
远程监控摄像头在流媒体服务器显示无视频信号?
当你装不上Python外部包时,试试这个网站
Python以第三方包丰富而著称,你想要的功能几乎都可以通过pip命令安装,避免什么都要自己重新造轮子尬尴。
Crossin先生
2020/02/27
2.3K0
当你装不上Python外部包时,试试这个网站
CMD远程连接服务器上的MySQL
2.输入mysql -h要远程的IP地址 -u设置的MySQL用户名 -p登录用户密码
ydymz
2018/09/10
6.6K0
远程服务器虚拟显示器(Ubuntu 20.04 LTS)[通俗易懂]
sudo apt-get –purge remove xserver-xorg-core-hwe-18.04 sudo apt-get –purge remove xserver-xorg-video-dummy
全栈程序员站长
2022/09/24
8.3K0
远程服务器虚拟显示器(Ubuntu 20.04 LTS)[通俗易懂]
解决Windows远程桌面连接工具连接不上远程操作系统的问题
问题反馈: 前两天不知道怎么了,使用远程桌面连接工具登录不上自己在vmware中创建的Windows7的虚拟机。一开始认为是虚拟机的问题。于是,我仔细检查了一下远程连接的必备条件:远程设置已开启“允许”、IP地址输入正确,用户名及密码正确。最后不放心,直接关闭防火墙设置。重新远程连接,依旧不行。于是百度啦~
宝耶需努力
2022/12/13
10K0
解决Windows远程桌面连接工具连接不上远程操作系统的问题
点击加载更多

相似问题

Angular js -从控制器调用数据-模式-目标

20

angular js中的条件ng模式

20

显示您好,Angular!在Angular JS中

41

在angular模式实例控制器的模式弹出窗口中显示相应的数据

15

Angular JS:控制器语法

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文