angular js 过滤器的使用及思路总结

来源:互联网 发布:易语言键盘记录源码 编辑:程序博客网 时间:2024/06/06 09:25

项目中,自己实现一个列表,按某一个类来分,同一个行表头,但内容可能有多行。


本来自己第一次做的时候 两层repeat 循环,第一次循环出每一行,每一行再 repeat 循环出有多行的情况。

但为了实现我要将里层循环每一行具体填写的内容传递给后台,这样从下标来判断来得到整个数组包括一些选中状态是(里面 是每一行中按钮单选,不同行可实现多选),实现起来就有点复杂。

angular js 双向数据绑定的观念还不够深入,之前一直按单选多选来做,做完后发现每一行数据除了这个还有相应的repeat 出来的日期选择器,如何把每行的日期区别开来,把所有这些数据总和起来,放在数组里,以我的程度,一直想不通。

后来像大神请教,它提出可以用过滤器来实现,外层循环依然按每行来循环,而里层数据就可以通过每一行的唯一特征来将里层过滤出来。这样我们需要整合出所有里层数据,后台传给我的格式是像我最初做的那种格式,没办法,只能通过两层for 循环,来将所有的数据信息push到数组$scope.array = array中( 数组中是对应的对象)。

数据准备好,里层循环  通过ng-repeat="a in array|filter:{'id':初始化数据的id}",注意这里id必须唯一,若不是唯一的,就会造成过滤出错,换成其他唯一特征。另外还需要注意过滤器的一点是,若数字包含某个值,他就会全部过滤出来,我本来要过滤1,结果把11的也过滤出来了,需要再加一个条件,即

ng-repeat="a in array|filter:{'id':初始化数据的id}:true".这样多选逻辑根本不存在,只要实现单选即可,这样每点击一次把这行数据传到后边,如果存在就将它设为空,不存在就设置相应的值。单选实现了,双向数据绑定,前边选择了,数组中的数据自然就变化了,日期时间选择input 有ng-model 双向绑定 ng-model="a.time",好了,这样全部数据就获得了,但有些无用数据,即没做过任何操作的,做个判断将其中为空的剔除出去,赋值给另外一个数组,再把数组转化成字符串,就可以传给后台了。

原创粉丝点击