Element Plus+.vue

Element Plus 是一个流行的 Vue.js UI 工具包,它提供了一套可定制的组件,用于构建现代化的 Web 应用程序。

要使用Element Plus,需要具备以下条件:

  • Vue.js 知识: Element Plus 是为 Vue.js 框架设计的,因此您需要了解 Vue.js
    的基础知识,如组件、指令、状态管理等。

  • 前端开发经验: 具备一定的前端开发经验会有所帮助,因为您需要理解如何在项目中集成 Element
    Plus,并对前端开发工具和流程有所了解。

  • Node.js 和 npm/yarn: 您需要在本地安装 Node.js 和 npm(或者 yarn),以便安装 Element
    Plus 和其他依赖项。

  • 开发环境: 需要一个合适的开发环境,比如编辑器(如VSCode)、浏览器和开发服务器,以便编写、测试和调试您的代码。

  • 项目需求: 最重要的是,您需要明确您的项目需求,并确定 Element Plus 是否适合您的项目。 Element Plus
    提供了丰富的组件和工具,但确保它们符合您的项目要求是很重要的。

标签

< el-table >

el-table 组件用于展示数据集合,它通常与 el-pagination 组件一起使用,实现分页功能。

基本特性 数据绑定:通过 data 属性绑定数据源。 列定义:通过 columns 属性定义表格的列,包括列的标题、字段名、格式化函数等。
分页:可以与 el-pagination 组件结合使用,实现数据的分页展示。 排序:支持列的排序功能。 筛选:可以对表格的列进行筛选。
行选择:支持单选或多选。 行展开:可以展开或收起表格的行,展示更多的内容。 自定义模板:允许自定义单元格的内容。
树形数据:支持树形结构的数据展示。

<template>
  <el-table :data="tableData" style="width: 100%">
    <el-table-column prop="date" label="日期" width="180"></el-table-column>
    <el-table-column prop="name" label="姓名" width="180"></el-table-column>
    <el-table-column prop="address" label="地址"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {
          date: '2016-05-03',
          name: '小李',
          address: '武汉市洪山区青王路 1518 ',
        },
        // 更多数据...
      ],
    };
  },
};
</script>

实现一个根据boolean进行在列表数据中渲染不同的样式状态

定义了一个函数类型的回调,这个回调根据 isStop 的值返回不同颜色的圆形标记:

{
    key: 'isStop',
    colWidth: '',
    title: '是否暂停',
    type: 'function',
    isCheck: true,
    callback(d: any) {
        if(d.isStop) {
            return "<div style=' width: 5px;  border-radius: 50%;  border: 5px solid #00FF00; margin: auto'></div>"
        } else {
            return "<div style=' width: 5px;  border-radius: 50%;  border: 5px solid #FF0000; margin: auto'></div>"
        }
    }
}

在 el-table-column 的模板中,当 item.type 是 ‘function’ 时,会调用这个回调:

<template v-if="item.type === 'function'">
    <div v-html = "item.callback && item.callback(scope.row)"></div>
</template>

这意味着对于“是否暂停”这一列,单元格的内容将根据 isStop 字段的值渲染为一个绿色或红色的圆点。

代码中,el-table-column 组件通过 v-for 循环和 v-slot
模板为每一列创建了一个单元格渲染逻辑。特别是“是否暂停”这一列,使用了一个函数类型的回调来动态渲染状态标记。

父子组件之间的事件传递和数据交互 实现从当前页传值给另一个页面

父组件(ParentComponent.vue)

<template>
  <div>
    <h1>父组件</h1>
    <ChildComponent @submit="handleSubmit" />
    <p>提交的数据:{{ submittedData }}</p>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      submittedData: ''
    };
  },
  methods: {
    handleSubmit(data) {
      this.submittedData = data;
      console.log('父组件接收到的数据:', data);
    }
  }
};
</script>

子组件(ChildComponent.vue)

<template>
  <div>
    <h2>子组件</h2>
    <input type="text" v-model="inputData" placeholder="输入数据" />
    <button @click="submitData">提交</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputData: ''
    };
  },
  methods: {
    submitData() {
      this.$emit('submit', this.inputData);
    }
  }
};
</script>

父组件 (ParentComponent.vue) 包含了一个子组件 ChildComponent,并且监听了子组件发出的 submit
事件。 当在子组件中点击提交按钮时,子组件的 submitData 方法会被调用。 submitData 方法使用 this.$emit
触发一个 submit 事件,并将输入框中的数据作为参数传递。 父组件的 handleSubmit
方法被调用,并接收到子组件传递的数据,然后将其存储在 submittedData 数据属性中,并在控制台中打印出来。
父组件的模板中显示了提交的数据,这样用户可以看到他们的输入被成功传递并处理。 这个示例展示了 Vue.js
中父子组件之间如何通过事件和数据绑定进行通信。

:deep()选择器

在 Vue.js 中,:deep() 是一个用于 Scoped CSS 的特殊选择器,允许开发者在 Scoped CSS 作用域之外选择子组件的元素。Vue.js 的 Scoped CSS 默认只应用于当前组件,防止样式污染其他组件。但有时候,我们需要针对子组件的某些元素进行样式定制,这时就需要使用 :deep() 选择器。

用法示例

假设有两个组件:ParentComponent 和 ChildComponent。ParentComponent 中包含了 ChildComponent,且需要对子组件中的元素应用特定样式。

ChildComponent.vue

<template>
  <div class="child">
    <p class="child-text">This is a child component</p>
  </div>
</template>

<script>
export default {
  name: 'ChildComponent'
};
</script>

<style scoped>
.child {
  background-color: lightblue;
}
</style>

ParentComponent.vue

<template>
  <div class="parent">
    <ChildComponent />
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  name: 'ParentComponent',
  components: {
    ChildComponent
  }
};
</script>

<style scoped>
.parent {
  border: 1px solid black;
  padding: 10px;
}

/* Using :deep() to style child component elements */
:deep(.child-text) {
  color: red;
}
</style>

ChildComponent 的 p 元素有一个类名 child-text,且默认的样式只在 ChildComponent 内部生效。
在 ParentComponent 中,通过 :deep(.child-text),我们可以选择并修改子组件中 child-text 类元素的样式,将其文本颜色设置为红色。

注意
• 使用 :deep() 选择器时,应谨慎操作,因为它破坏了 Scoped CSS 的隔离特性,可能导致样式冲突。

时间转字符串

const d:Date = new Date()
let date: Array<string> = []
d.forEach((i: any) => {
let year = i.getFullYear()
let month = i.getMonth() + 1
let day = i.getDate()
date.push(year + '-' + (month.toString().padStart(2, '0')) + '-' + (day.toString().padStart(2, '0')))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值