基于angularjs的下拉选择框封装

前端之家收集整理的这篇文章主要介绍了基于angularjs的下拉选择框封装前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一:UI产品交互图

 

二:实现包括功能

1:下拉框内容是表格,类似于一个弹窗

2:下拉内容是常见的select框形式

功能点总结:其实与原生的select下拉框形式一样,只不过是进行了一次封装,添加了与后台交互的逻辑。没办法,所有的实现都是因为需求的存在,说激进点,如果不是产品想出这个需求,我也不会去做。添加一句:万恶的产品。

三:实现的逻辑

 

  1. 对当前input框进行指令绑定,进行父子级的通信,传参大概包括:数据请求函数,渲染的类型(table select data city等,只要有数据,再进行页面UI修改即可),下拉弹窗的大小值指定,没有数据时下拉框显示的新建按钮名称与绑定的事件,当前input上绑定的model(用来做清空input)

  2. 当所需要的传参数据全部都有时,需要对下拉弹窗里的内容进行事件绑定,包括:input的focus调用后台接口,blur进行input的清空(填写的数据不符合要求时),上下键对当前渲染的项进行选择,enter键触发数据绑定。
  3. 根据数据进行渲染弹窗类型,使用ng-if进行弹窗内容的UI显示。比如ng-if==table ng-if==select 进行弹窗渲染。

四:实现的代码思想分析:

  1. angularjs的指令进行父子通信时,需要注意的就是scope的取值,传函数表达式时,scope = ‘&’ ,传model时 scope = ‘=’ ,传固定值时 scope=‘@‘ 
  2. 一些函数写在父级ctr里,比如请求后台函数。因为不同的页面需要,可能数据返回成功后有不同的操作,所以这个不好封装在指令里,需要保持指令的活性。
  3. table渲染时,也是封装了一个指令,这样之后在需要用到这个table指令时,可以较好较快的抽出使用

五:代码分析

  1. 指令html
  2. 父级ctroller
  3. 指令js

六:后续扩展与补充

  1. 如果在进行后台数据交互时,只针对当前input框内的model进行操作,可以将后台接口传到指令里,在指令里进行数据的交互,这样就完全脱离父级,成为一个独立的指令,相当于一个angularjs的插件

猜你在找的Angularjs相关文章