列表操作

列表操作 - 图1

列表的常用形式有图片形式与信息形式的,常见的有如下的操作:

  • 显示列表
  • 选择列表项
  • 新增列表项
  • 删除列表项
  • 更新列表项

范例代码

数据结构

列表操作 - 图2

  1. [
  2. {
  3. "id": 22341234,
  4. "name": "Good Song",
  5. "album": {
  6. "id": 213512,
  7. "name": "Good Album"
  8. },
  9. "artist":{
  10. "id": 1234512,
  11. "name": "Evil Artist"
  12. }
  13. }
  14. ]

显示列表

列表容器

列表操作 - 图3

列表模板 分离数据和视图

列表操作 - 图4

绘制列表

准备数据并整合模板与数据

列表操作 - 图5

通过 AJAX 获取数据

列表操作 - 图6

列表单选操作

列表操作 - 图7

列表多选操作(Control 与 Shift 操作)

  1. parent.addEventListener(
  2. 'mouseup', function(event) {
  3. var target = getTarget(event),
  4. selected = isSelected(target);
  5. // right click
  6. if (event.button == 2&&selected) {
  7. return;
  8. }
  9. // with control click
  10. if (event.ctrlKey) {
  11. !selected?appendToSelection(target):removeFromSelection(target);
  12. }
  13. // with shift key
  14. if (event.shiftKey) {
  15. var list = Array.prototype.slice.call(
  16. parent.getElementsByTagName('li'), 0
  17. );
  18. if (!last) {
  19. last = getLastElection() || target;
  20. }
  21. selectWithRangeFromTo(list, last, target);
  22. } else {
  23. last = null;
  24. }
  25. }
  26. );

右键菜单

contextmenu 事件为右键菜单弹出事件。

列表操作 - 图8

列表操作 - 图9

增加列表

列表操作 - 图10

列表操作 - 图11

删除列表

列表操作 - 图12

更新列表

列表操作 - 图13

更新状态

列表操作 - 图14

编程方式

面向视图 的操作方式,即为针对视图的直接编程(对 DOM 树进行直接的操作)。

列表操作 - 图15

列表操作 - 图16

这样的方式代理了许多的弊端,例如无法进行完全的自动化测试以及极高的视图层和控制层耦合的紧密性。

面向数据 的操作方式,视图则被抽象为若干的数据以及状态(后续所有的操作都会更加数据模型而操作),从而做到视图模型层完全自动化的测试。

列表操作 - 图17

列表操作 - 图18

列表操作 - 图19

列表操作 - 图20

列表操作 - 图21