当前位置:首页 > VUE

vue实现试题录入

2026-02-17 11:06:02VUE

Vue 实现试题录入功能

数据模型设计

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

vue实现试题录入

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

动态选项管理

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

vue实现试题录入

<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:

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 的递归组件特性可以轻松实现无限级嵌套菜单。通过组件调用自身的方式处理嵌套数据。 <template> <ul…

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keywor…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的d…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式:…

vue实现选区

vue实现选区

Vue 实现选区的基本方法 在Vue中实现选区功能通常涉及DOM操作和事件处理。以下是几种常见的方法: 使用原生JavaScript的Selection API 通过window.getSelec…

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用…