首页 > 其他分享 >VUE学习笔记(五)

VUE学习笔记(五)

时间:2024-05-29 10:00:38浏览次数:20  
标签:VUE const 笔记 学习 vue import 组件 dialogTitle data

defineprops和torefs的使用

用法,从父组件(Category.vue)向子组件(AddCategory.vue)传输数据

Category.vue

<template>
    <el-card class="box-card">
        <template #header>
            <div class="card-header">
                <span>商品分类</span>
                <el-button type="primary" icon="CirclePlus" round @click="handleDialog()">添加分类</el-button>
            </div>
        </template>
        <el-table :data="tableData.list" stripe style="width: 100%">
            <el-table-column prop="id" label="Id" width="180" />
            <el-table-column prop="name" label="名称" width="180" />
            <el-table-column fixed="right" label="操作" width="180">
                <template #default>
                    <el-button type="success" size="small">
                        修改
                    </el-button>
                    <el-button type="danger" size="small">删除</el-button>
                </template>
            </el-table-column>
        </el-table>

    </el-card>
    <AddCategoryVue ref="addCategoryRef" :dialogTitle="dialogTitle"></AddCategoryVue>
</template>

<script setup>

import { onMounted, reactive, ref } from 'vue'
import axios from "@/api/api_config.js"

import AddCategoryVue from '@/components/AddCategory.vue'
import { isNull } from '@/utils/filter.js'

///----------------------------------
const tableData = reactive({ list: [] })
const addCategoryRef = ref(null)//获取子组件实例
const dialogTitle = ref("")//对话框标题
///----------------------------------

onMounted(() => {
    getList()
})

//获取分类信息
const getList = () => {
    return axios.get('/category').then((res) => {
        tableData.list = res.data
    })
}

//打开分类页
const handleDialog = (row) => {
    if (isNull(row)) {
        dialogTitle.value = "添加分类"
    } else {
        dialogTitle.value = "修改分类"
    }

    addCategoryRef.value.dialogCategory()//调用子组件方法

}

</script>

src下新建utils文件夹(用于公共方法),utils下新建filter.js文件

export const isNull = (data) => {
  if (
    data === null ||
    data === undefined ||
    data === "" ||
    JSON.stringify(data) === "{}" ||
    !data
  ) {
    return true;
  } else {
    return false;
  }
};

AddCategory.vue接受来自父组件的数据

<template>

    <el-dialog v-model="dialogVisible" :title="dialogTitle" width="500" :before-close="handleClose">
        <el-form :model="sruleFroms" label-width="auto" style="max-width: 600px">
            <el-form-item label="分类名称">
                <el-input v-model="ruleFroms.name" />
            </el-form-item>
        </el-form>
        <template #footer>
            <div class="dialog-footer">
                <el-button @click="dialogVisible = false">Cancel</el-button>
                <el-button type="primary" @click="dialogVisible = false">
                    Confirm
                </el-button>
            </div>
        </template>
    </el-dialog>
</template>

<script setup>
import { reactive, toRefs } from 'vue'
///----------------------------------

defineProps({
    dialogTitle: {
        type: String,
        default: 'AddCategory'
    }
})
const state = reactive({
    dialogVisible: false,
    ruleFroms: {
        id: '',
        name: '图书'
    },
})
///----------------------------------
//打开对话框
const dialogCategory = () => {
    state.dialogVisible = true;

}
//关闭对话框
const handleClose = (done) => {
    state.dialogVisible = false;
    done();
}

//解构
const { dialogVisible, ruleFroms } = toRefs(state)


//主动暴露给父组件,编译器的宏命令,不需要引入
defineExpose({
    dialogCategory
})

</script>

 

标签:VUE,const,笔记,学习,vue,import,组件,dialogTitle,data
From: https://www.cnblogs.com/Lvkang/p/18219572

相关文章

  • vue前端页面搭建
    十、页面搭建学习10.1安装element在这里看一下有没有elementui,有就是下载成功了。10.2mainjs全局引入importElementUIfrom'element-ui';import'element-ui/lib/theme-chalk/index.css';Vue.use(ElementUI)10.3简单试用运行serve10.4页面布局(都可以直接查......
  • Prism框架与Microsoft.Extensions.DependencyInjection的集成使用笔记
    在现代的WPF应用开发中,Prism框架提供了强大的模块化、依赖注入和MVVM支持,而Microsoft.Extensions.DependencyInjection提供了简洁而功能强大的依赖注入机制。另外很重要的一点是Microsoft.Extensions.*或者第三方的Nuget基本会提供Microsoft.Extensions.DependencyInjection,那么......
  • vue 项目发布到docker
    在vue项目目录下执行npmrunbuild 会生成dist文件夹,dist文件夹中的内容就是包含了打包好的静态文件 写dockerfile FROMnginx#将本地的dist文件夹复制到nginx默认的静态文件目录COPY./dist/usr/share/nginx/html执行 dockerbuild-tmy-vue-app.  ......
  • SVRF学习_①_review下先
    由来自从正式工作后,时间都被有偿贡献给了公司。周末闲暇,也无兴致聊表乐趣之事。目前从事IC设计相关,大多工作资料都属于商业机密。<_>最近闲暇,想趁此诸君交流一些开放知识,分享会使我们共同进步!简单总结当前技术面想到啥写啥,随时改layout绘制--本职(90%以上都属于商业......
  • opencascade 快速显示AIS_ConnectedInteractive源码学习
    AIS_ConcentricRelationtypedefPrsDim_ConcentricRelationAIS_ConcentricRelationAIS_ConnectedInteractive简介创建一个任意位置的另一个交互对象实例作为参考。这允许您使用连接的交互对象,而无需重新计算其表示、选择或图形结构。这些属性是从您的参考对象推导而来......
  • Vitis HLS 学习笔记--块级控制协议-ap_ctrl_chain/ap_ctrl_hs/ap_ctrl_none
    目录1.简介2.详细分析2.1使用场景区别2.2 ap_continue行为详解2.3 ap_ctrl_chain行为详解3.总结1.简介块级控制协议允许硬件模块表明:何时可以开始处理数据。何时完成了数据处理。以及何时处于空闲状态,准备接受新的数据输入。这些信号用于本模块在与其他硬......
  • 数据结构与算法学习——二叉树
    题目PS:下列题目均来自leetcode中灵神题单938.二叉搜索树的范围和classSolution:defrangeSumBST(self,root:TreeNode,low:int,high:int)->int:ifnotroot:return0ifroot.val>high:returnself.rangeSumBST(r......
  • Django学习-虚拟环境创建、URL组成部分详解
    一、创建一个Django的虚拟环境 生成虚拟环境在D:\Virtualenvs下 在pycharm中引入django虚拟环境 二、URL详解 URL,统一资源定位符,一个URL由以下几部分组成:scheme://host:port/path/?query-string=xxx#anchorscheme:代表的是访问的协议,一般为http或者https以及ftp等h......
  • 基于知识图谱的个性化学习资源推荐系统的设计与实现(论文+源码)_kaic
      摘  要最近几年来,伴随着教育信息化、个性化教育和K12之类的新观念提出,一如既往的教育方法向信息化智能化的转变,学生群体都对这种不受时间和地点约束的学习方式有浓厚的兴趣。而现在市面上存在的推荐系统给学生推荐资料时不符合学生个人对知识获取的需求情况,以至于推......
  • springboot+vue+mybatis餐厅点菜管理系统+vue+PPT+论文+讲解+售后
    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此餐厅点菜信息的管理计算机化,系统化是必要的。设计开发餐厅点菜管理系统不......