vue 实现父子组件传值和子父组件传值

vue 实现父子组件传值和子父组件传值先上一张图,vue父子组件传值都用的图片。从张图入手了解如何传参。一、父组件1.引入子组件importrandomfrom”./child-random-paper”;2.注册子组件components:{random,},3.静态组件,循环体<liv-for=”(item,index)inselectedTypeQuestion”:key=”item.id”:ind…

大家好,又见面了,我是你们的朋友全栈君。

先上一张图,vue 父子组件传值都用的图片。从张图入手了解如何传参。

vue 实现父子组件传值和子父组件传值

一、父组件

1.引入子组件

import random from "./child-random-paper";

2.注册子组件 

components: {
    random,
  },

3. 静态组件,循环体

 <li
        v-for="(item, index) in selectedTypeQuestion"
        :key="item.id"
        :index="index"
        style="margin-top:10px"
      >
//引入子组件
        <random
          :questionType="selectTypeOfQuestion"
          :courseIds="courseId"
          :questionCount="testCountArray[index]"
          :questionTypeIds="questiontypeIdArray[index]"
          :index="index"
          @getValue="getMoreInfo"
          @getSource="getSource"
          @removeRandom="removeRandom"
        ></random>
      </li>

vue 实现父子组件传值和子父组件传值

通过循环试题类型数组,渲染子组件 

下拉框内容(每种题型只能出现一次)

4.子组件循环的数组就是这里push的value,是每种渲染出来的题型。

  //下拉框,查看该课程下的题型,如果试题模板为空,则渲染失败,提示输入题型。
    //否则选择子组件
    //查询该课程下的剩余试题
    selectChange(value) {
      //先判断数据中是否有该内容,如果没有加到数据,如果有不加到数组:
      if (this.selectedTypeQuestion.indexOf(value) == -1) {
        if (this.courseTemplate == "" || this.courseTemplate == undefined) {
          this.$confirm("请先输入试卷名称和总分值", "提示", {
            confirmButtonText: "确定",
            type: "warning",
          })
            .then(() => {})
            .catch(() => {
              this.$message({
                type: "info",
                message: "已取消删除",
              });
            });
        } else {
         this.selectedTypeQuestion.push(value);
    }
}

二、子组件

1.向父组件传值

用$emit函数进行传参,$emit函数用于防止子组件越权。向父组件传参的时候有两个内容,一个是父组件的方法,,这个方法用于监听子组件内容发生变化,及时能传给父组件。另外就是需要传的参数,这里的参数可以是一个,也可以是多个。 

handleChange(value) {
      console.log("题型的总成绩为:" + this.questionTypeAllSource);
      this.AllSource = this.questionTypeAllSource;
      this.$emit(
        "getValue",
        this.formInline,
        this.isExtractModel,
        this.AllSource
      );
    },

2.传递过去的参数(对象的形式),每个变量在父页面显示,动态变化

 formInline: {
        // 题型名称
        questionType: "",
        // 题型个数
        questionNum: "0",
        // 每题分数
        questionValue: "0",
        // 该题型的总共的分数
        AllSource: "",
        optionDisorder: "",
        //是否按空给分
        isBlanks: 0,
        //试题分类id
        questionClassifyId: "随机",
        // 章节id  
        questionClassifyObject: "",
        //是否自定义
        isCustom: 0,
        degree: 0,
        //是否必抽题
        isExtracts: 0,
        //当前剩余可选数量
        currentNum: "",
      },

 对应关系

vue 实现父子组件传值和子父组件传值

3.接受父组件传过来的值(用props接受) 

// 接受父组件传递过来的题型
  props: {
    questionType: {
      type: String,
      default: "",
    },
    index: "",
    questionLists: "",
    //每次循环渲染的时候传进来的题库剩余个数
    questionCount: "",
    //每次循环渲染的时候传进来的题型Id
    questionTypeIds: "",
    //课程id
    courseIds: "",
  },

 运用,下拉框为父组件的内容,选中的时候传到子组件,显示出来。

vue 实现父子组件传值和子父组件传值

三、效果

vue 实现父子组件传值和子父组件传值

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134904.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java面向对象的三大特性

    java面向对象的三大特性java面向对象的三大特性包括:封装、继承、多态一、封装1.含义:封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。2.封装的实现需要修改属性的访问控制符(修改为private);创建getter/setter方

    2022年7月9日
    18
  • iec104规约遥测遥信解析笔记「建议收藏」

    iec104规约遥测遥信解析笔记「建议收藏」最近在写104规约的解析暂时做一个笔记,先写一个遥信的后期再补全规约解析表如下:104规约解析 启动字符 1字节 取值 68H APCI应用规约控制信息 APDU应用规约数据单元 …

    2022年6月20日
    80
  • python入门教程(非常详细)书_python编程入门基础

    python入门教程(非常详细)书_python编程入门基础【Python第1课】安装…6【Python第2课】print.7【Python第3课】IDE.10【Python第4课】输入…12【Python第5课】变量…14【Python第6课】bool.16【Python第7课】if.19【Python第8课】while.23【Python第9课】random.

    2022年10月12日
    0
  • 查看当前本机浏览器FlashPlayer版本

    查看当前本机浏览器FlashPlayer版本FlashPlayerDetail  也可自编程序识别,此处附上关键API Capabilities.isDebugger;Capabilities.playerType;Capabilities.version;   另附上离线版

    2022年5月25日
    50
  • 如何telnet端口_telnet查看端口是否开放

    如何telnet端口_telnet查看端口是否开放cmd中,命令:talnetIP或域名端口号若提示:‘telnet’不是内部或外部命令,也不是可运行的程序或批处理文件。按次地址进行调整https://jingyan.baidu.com/article/3d69c551531986f0ce02d774.html转载于:https://www.cnblogs.com/mjbenkyo/p/8029535.html…

    2022年9月24日
    0
  • 初识ABP vNext(9):ABP模块化开发-文件管理

    初识ABP vNext(9):ABP模块化开发-文件管理

    2020年11月20日
    215

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号