zoukankan      html  css  js  c++  java
  • 六、敏捷开发框架 树形页面模型开发 TreePage

    通过前面的学习我们应该熟练掌握了 

    QueryPage  查询页面模型

    EditPage 编辑页面模型

    同时也掌握了,并不是一个页面就只能是一个模型,可以是组合使用的情况

    可以是 查询+编辑的组合    也开是  查询+查询的组合

     

    难道我们只有这两种页面模型吗?

    今天我们一起来学习我们开发中遇到的第三种页面模型

    树形结构页面开发模型 TreePage

     

    找个大家都看到过的页面,直观的感受一下

    如下图:

    image.png

    其实这是一个组合的页面模型,左侧是树形结构,右面是一个编辑模型(EditPage)

     

    好我们先从最简单的开始入手

    我们要开发这样的画面

    image.png

    敏捷框架通过抽象总结,设计了类  TreePage来专门解决这种页面的开发。

    代码怎么写

    image.png

    如上图:上面是视图部分

    代码部分,就一行

     

    继续增加代码:

    image.png

    我们来实现对左侧树的 【全部展开】,【全部折叠】功能

     

    image.png

     

    下面开发:

    image.png

    你只要在页面中增加:如下的HTML即可

    image.png

    具体到里面某一个功能,那需要针对性的开发实现具体的功能

    就比如说,我要实现调用后台API 对选择的 功能点进行重置顺序

    image.png

    image.png

       TreePage模型 提供了 getId方法 帮我们自动获取到当前你右键选中的节点。

        这样在后续的开发中就非常方便了。

        例如上面的代码,获得 功能点ID 然后调用  functionResetSEQ  API 实现 顺序重置功能

     

    =============================================================

    到此结束,基本树形页面功能就开发的差不多了。是不是很简单。

     

    开始实现:如下的画面

      image.png

    分析一下:左侧是树形页面,右侧是编辑画面模型

    两者的联动,是点击左侧的某个节点,右侧加载,然后在右侧实现、新增、修改等功能

    稍微复杂点就是,如果右侧有修改内容,左侧树要能立刻看到效果。

    代码如何实现:

     

     

    image.png

     分析下上面的代码:

     我们初始化了 treePage  和 EditPage 

     在TreePage的 options 里面设置了 onClick 回调函数

       page.keyValue=node.id

       page.load(   )              

          注意在里面我们调用的是 load 是根据主键查询加载数据

          记得前面的编辑页面模型开发的时候 调用的是 tryLoad 

          为什么要tryLoad(  ) 因为这个页面可能是编辑、也可能是新增 所以 tryLoad 希望通过这样的解释加深记忆

      通过这两行代码,就实现右侧数据的展示。

        EditPage 同时我们还注册了  loaded事件

        因为,默认右侧的 div是不显示,当点击了以后才可以显示出来

       

        默认是这样的

    image.png

    点击后

    image.png

     

     

    这样这个页面总体上就OK了。貌似没有遇到特殊的障碍。

    那加大点难度

     

    image.png

    和上面的功能管理有啥差别呢,貌似就是在右侧多个

     列表页面模型

     这个列表模型 虽然没有查询条件 其实隐含了查询条件(  当前点击的组织结构 )

                          虽然没有查询按钮,其实它的查询触发点是 点击组织机构

     

    那我们看看代码的实现

    视图开发,为了方便开发, 这里使用 第 五 课 讲的 组件 开发 方式 将 视图代码 单独文件存放.

    image.png

    image.png

    如上:红色框线DOM 和蓝色框线 DOM  实现的效果

     

     

    打开 EmployeeArea.html 看看

    典型的 查询页面 DOM结构

    image.png

    Js代码:

    image.png

    我们实例化了一个  QueryPage  API是查询员工信息

    配置了 editUrl  editTitle 为了完成[编辑]按钮的弹出

    配置了 deleteApi,配合完成删除操作

     

     

    image.png

       树控件 点击  加载 组织机构

     

    image.png

     

    组织机构加载完毕后, page.search

    page

    就是上面实例化的员工查询 QueryPage 

    这样就将员工数据都查询出来了.

     

    员工列表行上提供了三个操作按钮

    image.png

    image.png

    行上按钮,前面有介绍过,这里拿这个真实的场景来介绍下如何控制按钮是否可以点击.

    这个场景是,员工如果有分配用户才能点击[ 编辑用户 ]

    【详细】按钮就是编辑员工信息 直接调用 page.edit(this) 就完成了,不用额外写代码

    【删除】直接调用 page.delete(this)就完成了,不用额外写代码

     

      editUser 是打开员工对应的用户信息,这属于业务非标准功能,需要研发人员自己开发实现 

      看下代码怎么写

      image.png

    一样,通过 EciAction 动作模型,这个前面已经学习过,再次加深下映像,未来这个 page.Action无处不在

     

    点击【编辑用户】实现的效果

    image.png

     

    ==============================================================

    至此,这个复杂页面开发总体也是开发完成了。

    开发需要适时的总结

    大家有没有发现,复杂的页面也是通过简单的部件组合而来的。

    这样所有是事情就都变成简单是事情了。

     

    要看透事物的本质,看透了,也就能抽象

    也就是那几个抽象模型

     

    抽象是为了提取共性,同时框架还要预留个性。

    二者的完美结合,才能所向披靡,无所不能。

     

  • 相关阅读:
    QuantLib 金融计算——案例之固息债的关键利率久期(KRD)
    Elasticsearch 最佳运维实践
    Ansible常用的Ansible Module
    中国七夕节( Chinese Valentine's Day)IT的浪漫情结
    Leetcode之C++刷题生死战
    无需Root可自动定时发送微信和短信的黑科技APP,支持跳过开屏启动广告
    tmp
    【整理中】可靠性基础_抽样检测
    【汇总】命名及标识
    Treelist父节点上下移
  • 原文地址:https://www.cnblogs.com/godmodel/p/13029090.html
Copyright © 2011-2022 走看看