elementUI系列elementUI中表格的筛选功能和排序功能同时使用
一、前言最近在写项目的时候,发现自己对elementUI的表格,自己想吐槽一下table的组件,可能是没有理解透文档中的说明使用。 二、需求要做成这样的: 然后左侧还有一个类似于导航的切换,也可以是tab切换。左侧是查数据库的,右侧也是查数据库的。 三、分析写代码前分析一下: (1)我打算左侧使用tab切换。原因:这个数据之间有关联,分隔内容。用导航有点大材小用。 (2)右侧的部分打算封装成组件,因为每一个tab的内容和数据很相似。这样也是前端的组件高复用,模块化开发,而且左侧导航是后端控制的,多少条不知道。 四、封装组件,父组件传值给子组件子组件和父组件之间的通信,记住父传子:props属性,子传父:this.$emit()方法,兄弟传兄弟,用vuex。 组件的布局分成三部分:介绍,表格,分页。 1、子组件 父组件给子组件传值,在组件上使用props属性,接受父组件传递的值。 2、父组件那么父组件是怎么传的呢?看下图 父组件的布局 这个是父组件,红框内容就是父组件传值方式,父组件在自己本地需要定义后边的parentData,后边的tableData。前边是传给子组件的接受名。 父组件的data 五、封装组件,子组件传值给父组件为啥子组件还需要给父组件传值,因为子组件的操作改变了数据,对父组件造成了影响。 咱么这个需求中,也是可以选择子组件不给父组件传值的,直接改变子组件中改变父组件传递过来的值。我们就当复习一下父子组件传值。 比如分页这个功能,子组件需要将第几页传给父组件。 子组件的pageChange方法: pageChange(val) { this.middleData.pageNum = val; this.$emit('childData', this.middleData) },那父组件是怎么接受这个页码的呢? childData (val) { this.paramsData.orderBy = val.orderBy; this.paramsData.dir = val.dir; this.paramsData.dimension = val.dimension; this.queryData(); }上述childData方法中父组件方法,参数就是子组件传递的数据。 六、子组件的表格的【筛选功能】和【排序功能】1、我们先看【排序功能】看一下官方文档: 我是需要后端配合使用,远程排序。所以必须设置custom。然后配合sort-change方法。不然就是前端排序 我们来看一下sortChang方法: sortChange (column, event) { this.middleData.orderBy = column.prop; if(column.order =='ascending'){this.middleData.dir = 'asc'}else if(column.order =='descending'){this.middleData.dir = 'desc'}else{this.middleData.dir = ''}; this.$emit('childData', this.middleData) },将查询的参数传递给父组件。 ...