定义一个弹出框的服务:alert_box

 defiine(["app"],function(mainapp){
mainapp.controller('ModalInstanceCtrl',[ "$scope","$uibModalInstance","items",function ($scope, $uibModalInstance, items) {
$scope.items = items;//来自服务的resolve
$scope.selected = {
item: $scope.items[0]
};
//对应于服务then的第一个函数
$scope.ok = function () {//点击”确定“按钮
$uibModalInstance.close($scope.selected.item);
};
//对应于then的第二个服务
$scope.cancel = function () {//点击”取消“按钮
$uibModalInstance.dismiss('cancel');
};
})]; mainapp.factory("alert_box",["$uibModal","$log",function($uibModal,$log){
var alert_box={};
alert_box.change_team(){
var items=["测试1","测试2","测试3"];
var modalInstance=$uibModal.open({
animation:true,
templateUrl:"js/service/myModal/modal_alert.html",
controller:"ModalInstanceCtrl",
size:"large",
resolve:{//保证在js服务加载之前,先执行(注入一个items,用于将服务里面的数据传递到控制器)
items:function(){
return items;
}
}
});
modalInstance.result.then( //then的第一个函数对应ok(),第二个函数对应cancel()
function(sel){console.log(sel)},
function(){console.log(”用户取消操作“);}
);
}
return alert_box;
}]);
});

  

弹出框服务的使用:(我这里是在一个指令里面调用的)

define(["app","js/service/myModel/model_alert"],function(mainapp){//引入服务文件
mainapp.directive('myheader',[function(){
return{
replace:true,
templateUrl:"directive_tpls/header.html",//指令的模版页面
controller:["$scope","alert_box",function($scope,alert_box){
.......///
其他的业务逻辑神略
.......///
$scope.openmodel=function(){
alert_box.change_team();//通过服务调用
}
}]
}
}]);
});

 然后就可以在指令的模版页面中调用

例如:<div ng-click="openmodal()"></div>

以上的封装似乎还是来的简单,下面再来一次进阶封装

1)还是定义一个服务

define(['app','js/service/myModal/modal_ctrl'],function(mainapp){
mainapp.factory('alert_box',['$uibModal','$log',function($uibModal,$log){
var alert_box={};
alert_box.open_modal=function(obj){
var items=obj.info;
return $uibModal.open({
animate:obj.animate,
templateUrl:obj.tpl_url,
controller:obj.self_ctrl,
size:obj.size,
resolve:{
items:function(){
return items;//这个参数可以在弹出框控制器中注入,用于页面控制器向弹出框控制器传参数
}
}
})
}
}]);
});

2)modal_ctrl,我这里是将所有的弹出框控制器,集中在这里(遍历管理),当然你也可以直接写在上面的服务中

  js/service/myModal/modal_ctrl

define(['app',
"js/service/addApplicant/checkbox_add_applicant",
'js/service/choiceInventors/choice_add_inventors',
'js/service/alertModal/cofirm'
],function(mainapp){
mainapp.registerController("modal_ctrl",[function(){ }]);
});

3)定义弹出框Ctrl,用于弹出框模版的数据交互处理

define(['app'],function(mainapp){
mainapp.registerController("checkboxAddInventors",['$uibModalInstance','$scope','items',function($uibModalInstance,$scope){
/*
给页面确定,取消按钮两个事件(通过这两个方法可以将数据信息传递给服务
*/
$scope.sure=function(){
$uibModalInstance.close("点击确定按钮");
}
$scope.cancel=function(){
$uibModalInstance.dismiss("点击取消按钮");
}
}]); });

4)在这里省略弹出框模版了:js/service/choiceInventors/checkbox_add_Invertors.html

5)在页面控制器使用弹出框服务

define(['app'
,'js/service/modal_alert'
],function(mainapp){
mainapp.registerCtroller("addCtrl",['$scope','alert_modal',function($scope,alert_modal){
/*
给他一个触发事件
*/
$scope.open=function(){
alert_box.open_modal({
tpl_url:'js/service/choiceInventors/checkbox_add_Invertors.html',
self_ctrl:'checkboxAddInvertors',
size:870,
animate:true }).then(function(res){//点击确定按钮的回调函数 },function(res){//点击取消的回调函数 });
} }]); });  

  页面控制器-------------------resolve:{   }-------------------->弹出框模版控制器

弹出框控制器------------回调函数------------------------------>页面控制器

注意:使用的版本

在自定义服务时,是不能注入$scope的

http://angular-ui.github.io/bootstrap/versioned-docs/1.3.1/#/modal  

将angular-ui-bootstrap的弹出框定义成一个服务的实践的更多相关文章

  1. angular-ui-bootstrap的弹出框定义成一个服务的实践(二)

    定义一个弹出框的服务:alert_box defiine(["app"],function(mainapp){ mainapp.controller('ModalInstanceC ...

  2. Bootstrap:弹出框和提示框效果以及代码展示

    前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...

  3. JS组件Bootstrap实现弹出框和提示框效果代码

    这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编 ...

  4. Bootstrap模态弹出框

    前面的话 在 Bootstrap 框架中把模态弹出框统一称为 Modal.这种弹出框效果在大多数 Web 网站的交互中都可见.比如点击一个按钮弹出一个框,弹出的框可能是一段文件描述,也可能带有按钮操作 ...

  5. Bootboxjs快速制作Bootstrap的弹出框效果

    Bootboxjs是一个简单的js库,简单快捷帮你制作一个Bootstrap的弹出框效果. 一.简介 bootbox.js是一个小的JavaScript库,它帮助您在使用bootstrap框架的时候快 ...

  6. [Bootstrap]modal弹出框

    写在前面 在实际开发中,为了友好,更需要一种美观的弹出框,js原生的alert,很难满足需求.这里推荐一个bootstrap的弹出框. 一个例子 先看效果吧 代码: <!DOCTYPE html ...

  7. Bootstrap实现弹出框和提示框效果代码

    一.Bootstrap弹出框使用过JQuery UI应该知道,它里面有一个dialog的弹出框组件,功能也很丰富.与jQuery UI的dialog类似,Bootstrap里面也内置了弹出框组件.打开 ...

  8. Bootstrap popover弹出框

    popover被挤压.遮挡的问题: 弹出框显示的时候如果贴近一个列的边沿,就会很窄或被遮挡,解决起来很简单,只需在初始化的时候添加一个container属性就可以了: $(function (){ $ ...

  9. 自定义Bootstrap样式弹出框

    最近做的一些功能需要用到Bootstrap,然而原来的系统并没有引入Bootstrap,为了新写的控件能够应用于老的页面,又不需要在老的页面上引入全套的Bootstrap文件决定写一个模仿Bootst ...

随机推荐

  1. Mac电脑使用Android Studio进行真机调试

    第一步: 为mac电脑配置 adb 命令的环境变量,分为2小步 1.找到 Android Studio 为你安装的 SDK : 打开电脑中 Android studio 的工具的软件,在启动 Andr ...

  2. TPshop入门大纲

    笔记大纲: tpshop目录结构 功能模块 函数库 重要配置 助手函数 插件 模板 1.TPshop目录结构 看这个图,目录结构一目了然. 下面要讲的内容也是根据这个图展开的. 2.功能模块 前几天刚 ...

  3. (1)使用bash脚本实现批量添加用户

    脚本实现内容: 可以指定用户名前缀,指定添加数量的批量添加用户脚本,密码为10为随机小写字母,并把用户名和密码写入文件中. 脚本代码: #!/bin/bashread -p "用户名前缀:& ...

  4. NancyFx 2.0的开源框架的使用-Basic

    这是NancyFx开源框架中的Basic认证,学习一下! 首先当然是新建一个空的Web,BasicDemo 继续在项目中添加Nuget包,记得安装的Nuget包是最新的预发行版 Nancy Nancy ...

  5. jdbc(2)

    create table account ( id int primary key auto_increment, name varchar(20), money double);insert int ...

  6. Android studio 断点技巧

    写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug:那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Evaluate Expression , 知道条件断 ...

  7. 一步步学习EF Core(3.EF Core2.0路线图)

    前言 这几天一直在研究EF Core的官方文档,暂时没有发现什么比较新的和EF6.x差距比较大的东西. 不过我倒是发现了EF Core的路线图更新了,下面我们就来看看 今天我们来看看最新的EF Cor ...

  8. 【设计模式】单一职责原则(SRP)

    单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下: 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能 ...

  9. iOS 证书详情介绍

    1.Certification(证书)安装证书后使这台电脑就有开发APP和真机调试的功能. 证书分为开发证书(Developer Certification)和发布证书(Distribution Ce ...

  10. [原创]Nexus5 源码下载、编译、真机烧录过程记录

    asop使用清华镜像源https://mirror.tuna.tsinghua.edu.cn/help/AOSP/ 一开始使用每月初始化包的方式因为无法搞定版本的问题,没能通过编译,无奈,老老实实一点 ...