当前位置:首页 > VUE

vue实现试题录入

2026-02-17 11:06:02VUE

Vue 实现试题录入功能

数据模型设计

试题数据通常包含题目内容、选项、答案、难度等信息。使用Vue的data属性定义试题对象:

data() {
  return {
    question: {
      title: '',
      type: 'single', // single/multiple
      options: [
        { text: '', isAnswer: false },
        { text: '', isAnswer: false }
      ],
      difficulty: 1
    }
  }
}

动态选项管理

通过v-for动态渲染选项,并实现增删功能:

<div v-for="(option, index) in question.options" :key="index">
  <input v-model="option.text" placeholder="选项内容">
  <input type="checkbox" v-model="option.isAnswer">
  <button @click="removeOption(index)">删除</button>
</div>
<button @click="addOption">添加选项</button>

表单验证

使用计算属性或watch进行基本验证:

computed: {
  isValid() {
    return this.question.title.trim() && 
           this.question.options.some(opt => opt.isAnswer)
  }
}

提交处理

通过axios提交数据到后端API:

vue实现试题录入

methods: {
  submitQuestion() {
    if (!this.isValid) return alert('请完善题目信息');
    axios.post('/api/questions', this.question)
      .then(() => {
        this.resetForm();
        alert('提交成功');
      })
  },
  resetForm() {
    this.question = { /* 重置数据 */ }
  }
}

完整组件示例

<template>
  <div class="question-editor">
    <textarea v-model="question.title" placeholder="题目内容"></textarea>

    <select v-model="question.type">
      <option value="single">单选题</option>
      <option value="multiple">多选题</option>
    </select>

    <div v-for="(opt, i) in question.options" :key="i">
      <input v-model="opt.text">
      <input type="checkbox" v-model="opt.isAnswer">
      <button @click="removeOption(i)">×</button>
    </div>

    <button @click="addOption">+ 添加选项</button>
    <button @click="submitQuestion" :disabled="!isValid">提交</button>
  </div>
</template>

进阶功能建议

  1. 使用Vuex管理试题状态
  2. 集成富文本编辑器如Quill.js
  3. 实现题目分类功能
  4. 添加图片上传支持
  5. 使用Element UI等组件库美化界面

以上实现可根据实际需求调整数据结构,例如添加知识点关联、解析说明等扩展字段。后端接口需要对应处理这些字段的存储和检索。

标签: 试题vue
分享给朋友:

相关文章

实现vue模版

实现vue模版

Vue 模板的基本结构 Vue 模板基于 HTML 语法,通过 Vue 的指令和插值实现动态渲染。以下是一个基础模板示例: <template> <div id="…

vue实现tag

vue实现tag

Vue 实现标签(Tag)功能 在 Vue 中实现标签(Tag)功能可以通过多种方式完成,以下是一些常见的方法和实现步骤: 使用动态组件和 v-for 通过 v-for 指令动态渲染标签列表,结合样…

vue实现动态

vue实现动态

Vue 实现动态路由的方法 在 Vue 中实现动态路由通常涉及以下几个关键步骤: 使用 Vue Router 的动态路由匹配 通过 Vue Router 的 :param 语法可以实现动态路由匹配。…

vue实现popup

vue实现popup

Vue 实现 Popup 弹窗 使用 Vue 原生组件 创建一个基本的 Vue 组件作为弹窗,通过 v-if 或 v-show 控制显示隐藏。 <template> <div&…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…

vue实现treeselect

vue实现treeselect

Vue TreeSelect 实现方法 使用 Vue 实现 TreeSelect 组件可以通过以下几种方式完成,包括使用现成的第三方库或自行封装组件。 使用第三方库 推荐使用成熟的第三方 TreeS…