当前位置: 首页 > article >正文

【开发实践】在线考试系统(三) Sortable实现试题的重排序

一、需求分析

        开发一个在线考试系统,在教师组卷功能模块中,需要对已经选择的试题进行重排序,获得所需试题顺序的试卷。

如下是试卷编辑页面,需要在将已经选中的试题重排顺序。

二、技术引入 

1、sortable.js

sortable.js 官方github网址

Sortable 是一个用于可重新排序的拖放列表的 JavaScript 库

【特点】

  • 支持触摸设备和现代浏览器(包括IE9)
  • 可以从一个列表拖动到另一个列表或在同一列表中拖动
  • 移动项目时的 CSS 动画
  • 支持拖动手柄和可选文本(比voidberg的html5sortable更好)
  • 智能自动滚动
  • 高级交换检测
  • 流畅的动画
  • 多拖动支持
  • 支持 CSS 转换
  • 使用原生 HTML5 拖放 API 构建

【资源导入】

Install with NPM:

$ npm install sortablejs --save

Install with Bower:

$ bower install --save sortablejs

Import into your project:

// 默认 SortableJS
import Sortable from 'sortablejs';

// Core SortableJS(没有默认插件)
import Sortable from 'sortablejs/modular/sortable.core.esm.js';

// 完成SortableJS(所有插件)
import Sortable from 'sortablejs/modular/sortable.complete.esm.js';

Cherrypick plugins:

// Cherrypick extra plugins
import Sortable, { MultiDrag, Swap } from 'sortablejs';

Sortable.mount(new MultiDrag(), new Swap());


// Cherrypick default plugins
import Sortable, { AutoScroll } from 'sortablejs/modular/sortable.core.esm.js';

Sortable.mount(new AutoScroll());

2、入门案例

【简单使用】

<ul id="items">
	<li>item 1</li>
	<li>item 2</li>
	<li>item 3</li>
</ul>
var el = document.getElementById('items');
var sortable = Sortable.create(el);

 三、需求实现

1、vue中重排序方法

setSort(){
      let that = this;
      const tbody = this.$refs.table.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
      Sortable.create(tbody , {
      	animation: 300,
      	onEnd: evt => {
            // 请求接口排序,后面具体需要什么参数,获取就行了,每个人需要不一样
            that.testPaper.testPaperQuestionList.splice(evt.newIndex, 0, that.testPaper.testPaperQuestionList.splice(evt.oldIndex, 1)[0])
            let newArray = that.testPaper.testPaperQuestionList.slice(0)
            that.testPaper.testPaperQuestionList = []
            that.$nextTick(function () {
                that.testPaper.testPaperQuestionList = newArray
            })
            that.PaperQuestionList= newArray;
	   	 } 
      })
    }

【注意】: 需要在钩子函数mounted或者create中,调用该方法初始化。

2、效果展示

 


http://www.kler.cn/a/5537.html

相关文章:

  • 【乐企文件生成工程】根据特定要素动态选择需要生成的发票板式文件实现
  • C/C++ 数据结构与算法【树和森林】 树和森林 详细解析【日常学习,考研必备】带图+详细代码
  • 内置ALC的前置放大器D2538A/D3308
  • 简单园区网拓扑实验
  • C++系列之指针总结
  • elasticsearch中使用fuzzy查询
  • 太敢说了,编程如果这么自学,培训班都得倒闭,直接省去上万元的学费
  • 【iOS】—— 多线程之pthread、NSThread
  • GPT-4问世;LLM训练指南;纯浏览器跑Stable Diffusion
  • 基于SpringBoot的校园疫情防控系统设计与实现
  • DataGrid第一列复选框CheckBox且绑定viewmodel数据示图,绑定方法怎么写
  • 2023.04.02 学习周报
  • 解读C++ constexpr关键字的特性
  • R语言数据处理学习记录--用自己的数据完成mental test(使用ggcor包)
  • 【Nvidia】nvidia 高级特性MIG详细介绍(二)
  • seaborn从入门到精通03-绘图功能实现03-分布绘图distributional plots
  • C++/MFC工程[4]——绘制直线段
  • php微信小程序java+Vue高校课程课后辅导在线教育系统nodejs+python
  • 软考-软件测试
  • 蓝桥杯C/C++VIP试题每日一练之完美的代价
  • 数据驱动案例
  • 接收机的噪声来源与噪声分析
  • 米哈游春招后端-2023.03.19-第一题-米哈游的RBG矩阵-简单
  • 别把 OpenAI 太当回事,它远未达到替换前端的地步
  • Retrofit源码分析小结
  • 《Effective Objective-C 2.0 》 阅读笔记 item5