恰好写过。
ng的组件分为两种形式,一种是用directive封装的custom element形式的component,比如Button、Tooltip这种;另外一种则是以Service形式封装成一个单例的object由angular的IoC注入到controller中,比如notification、或者你需要的modal。
首先要为modal服务设计API,比如modal.open modal.close, 然后要为弹出的modal设计遮罩层,并且确定当同时有多个modal出现在页面上时,遮罩层唯一。
其次,出于ng的特殊性,每次open一个新modal时,都需要利用ng内置的$compile服务对modal内的模板进行编译,并且为了支持controllerAs的关键词,这部分连接需要手动在服务中处理(具体怎么处理百度一下吧,很容易)
以下是我当初设计时写的一些参数,或许你可以参照。
API:.open(options) => Modal Object Instance
options ::= {
template: String | dom<class|Id>,
className: String,
scope: AngularScope,
hooks:{
onOpen: Function,
onClose: Function
},
controller:String,
controllerAs:String,
title: String
}
.closeAll
.close(id)
id ::= Number
额外的,这里有一个简单的实现,供你参考https://github.com/btford/angular-modal/blob/master/modal.js
-modules:放置模块的文件夹,里面有一个 alert 文件夹,用于存放 alert 插件 ; -Alert.vue:就是我们要在多处用到提示弹窗组件; -index.js:对于该自定义插件的一些配置; 1.alert 2.confirm原文 https://blog.csdn.net/sinat_40697723/article/details/106036056