玩转Angular1(13)--服务与指令的配合使用
更新日期:
文章目录
AngularJS(v1.5.8)已经成为项目们的基本框架,《玩转Angular1》系列用于记录项目中的一些好玩或者比较特别的思路。
本文简单介绍通过服务来调用Directive指令的过程。
确认弹窗服务
基本思路
有时候,我们需要在控制器逻辑中进行确认操作,例如删除、注销等一些操作,是需要用户进行确认的。
这时候我们想要这样的一个服务,用来进行确认操作:
- 调用函数,传入title、text等参数,显示确认的信息
- 函数返回一个Promise,可使用
.then
来进行后续的处理 - then函数传入两个回调,分别是确认继续的回调,和取消的回调
我们的服务还需要对外提供以下功能:
- 设置函数
SetAlertMsg
- 是否已设置弹窗
isAlertMsgSet
- 设置的数据
GetAlertMsgParams
- 取消函数
AlertMsgReject
- 确认函数
AlertMsgResolve
后面的几个,主要是为了在指令中使用。
AlertMsg.ts
|
|
确认弹窗组件
基本思路
弹窗组件需要满足的一些需求:
- 获取弹窗服务的状态,来控制是否显示
- 获取弹窗服务的数据,并进行相应的展示控制
- 取消或关闭时,调用reject
- 添加按键Esc事件,进行取消或关闭
- 确认时,调用resolve回调
alertMsg.directive.ts
|
|
关于EscKeyUp服务,有兴趣或者疑问的小伙伴可以到《玩转Angular1(9)–按键事件队列KeyUp服务》查看。
alertMsg.template.html
|
|
这里,若我们不传入title参数,是不会显示头部的,这也是配置的一种。
而关于[on-focus-lost]指令,前面《玩转Angular1(10)–使用Directive指令来添加事件监听》也提到过,其实这里我们的EscKeyUp服务,也可以转成[on-esc]指令来实现的。
注册指令并使用
- 在
bootstrap.ts
启动文件中注册指令
|
|
- 在登录的时候使用
|
|
- 在
index.html
中全局注入指令
|
|
效果图:
结束语
这节主要简单介绍服务和组件配合着使用的过程,当然其实要实现这样的设计,还有一些其他的方法,小伙伴们也可以去想一下啦。还可以把弹窗模块进行拓展,加入可配置输入框、选择框等等去做呢。
此处查看项目代码
此处查看页面效果
查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢
码生艰难,写文不易,给我家猪囤点猫粮了喵~