免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ElementUI快速入門

本文主要從幾個方面快速入門ElementUI

1、什么是ElementUI ? 掌握elementUI腳手架搭建

2、掌握elementUI的table組件的使用,實(shí)現(xiàn)列表功能

3、掌握elementUI的pagination組件的使用,實(shí)現(xiàn)分頁功能

4、掌握elementUI的form相關(guān)組件的使用,實(shí)現(xiàn)條件查詢功能

5、掌握elementUI的dialog組件和$message的使用,實(shí)現(xiàn)彈出窗口和消息提示功能

6、掌握elementUI的select組件的使用,實(shí)現(xiàn)下拉列表功能實(shí)現(xiàn)新增數(shù)據(jù)和修改數(shù)據(jù)的功能

7、掌握confirm的使用,實(shí)現(xiàn)詢問框,實(shí)現(xiàn)刪除功能

1、什么是ElementUI?

Element 餓了么前端出品的一套 基于 Vue 2.0 的桌面端組件庫

官網(wǎng): http://element.eleme.io/#/zh-CN

1.1、搭建elementUI腳手架(vue-admin-template)

  1. # Clone project
  2. git clone https://github.com/PanJiaChen/vue-admin-template.git
  3. # Install dependencies
  4. npm install
  5. # Serve with hot reload at localhost:9528
  6. npm run dev
  7. # Build for production with minification
  8. npm run build
  9. # Build for production and view the bundle analyzer report
  10. npm run build --report

在執(zhí)行完npm run dev后發(fā)現(xiàn)瀏覽器自動打開了vue-admin-template登錄頁面,點(diǎn)擊登錄,此時模板頁面就搭建好了。

打開文件夾vue-admin-template,主要的目錄結(jié)構(gòu)如下圖所示:

1.2 項(xiàng)目初始化調(diào)整

1.2.1  關(guān)閉語法規(guī)范性檢查

修改config/index.js ,將useEslint的值改為false。

此配置作用: 是否開啟語法檢查,語法檢查是通過ESLint 來實(shí)現(xiàn)的。

我們現(xiàn)在科普一下,什么是ESLint : ESLint 是一個語法規(guī)則和代碼風(fēng)格的檢查工具,可以用來保證寫出語法正確、風(fēng)格統(tǒng)一的代碼。如果我們開啟了Eslint , 也就意味著要接受它非??量痰恼Z法檢查,包括空格不能少些或多些,必須單引不能雙引,語句后不可以寫 分號等等,這些規(guī)則其實(shí)是可以設(shè)置的。作為初學(xué)者,最好先關(guān)閉這種校驗(yàn),否則會浪費(fèi)很多精力在語法的規(guī)范性上。如果以后做真正的企業(yè)級開發(fā),建議開啟。

1.2.2  國際化設(shè)置

打開main.js 找到這句代碼

import locale from 'element‐ui/lib/locale/lang/en'

我們將en修改為zn-CN
import locale from 'element‐ui/lib/locale/lang/zh‐CN'

修改后組件都是按照中文的習(xí)慣展示

1.2.3  與easy-mock對接

(1)修改config下的dev.env.js中的BASE_API為easy-mock的Base URL

  1. ....
  2. BASE_API: ''http://10.211.5.3:7300/mock/5af314a4c612420d0d7650c7'',
  3. ....

修改后發(fā)現(xiàn)無法登錄上vue-admin-templates,原因是修改了BASE_API,需要在自己的Easy-mock中修改驗(yàn)證

(2)easy-mock添加登陸認(rèn)證模擬數(shù)據(jù) 地址: /user/login
提交方式:post
內(nèi)容:

  1. {
  2. 'code': 20000,
  3. 'data': {
  4. 'roles': ['admin'],
  5. 'role': ['admin'],
  6. 'name': 'admin',
  7. 'avatar': 'https://wpimg.wallstcn.com/f778738c‐e4f8‐4870‐b634‐56703b4acafe.gif'
  8. }
  9. }

(3)添加返回用戶信息url模擬數(shù)據(jù) 地址:/user/info
提交方式:get
內(nèi)容:

  1. {
  2. 'code': 20000,
  3. 'data': {
  4. 'roles': ['admin'],
  5. 'role': ['admin'],
  6. 'name': 'admin',
  7. 'avatar': 'https://wpimg.wallstcn.com/f778738c‐e4f8‐4870‐b634‐56703b4acafe.gif'
  8. }
  9. }

此時又可以登錄上vue-admin-template,且成功與自己的easy-mock對接上了。

2.elementUI的table組件,實(shí)現(xiàn)列表展示

(1)在src/api/下創(chuàng)建gathering.js,書寫代碼:

  1. import request from '@/utils/request'
  2. export default{
  3. getList(){
  4. return request(
  5. {
  6. url:'/gathering/gathering',
  7. method:'get'
  8. }
  9. );
  10. }
  11. }

導(dǎo)入request模塊實(shí)際上是對ajax的封裝(在utils/request.js中),上述的url和method即為請求的url和method

(2)在views/table中創(chuàng)建 gathering.vue

vue主要分為視圖區(qū)<template>、邏輯區(qū)/代碼區(qū)<script>(用于控制視圖區(qū)的顯示)

  1. <template>
  2. <el-table :data='list' border style='width: 100%'>
  3. <el-table-column prop='id' label='活動ID' width='180'>
  4. </el-table-column>
  5. <el-table-column prop='name' label='活動名稱' width='180'>
  6. </el-table-column>
  7. <el-table-column prop='sponsor' label='主辦方' width='180'>
  8. </el-table-column>
  9. <el-table-column prop='address' label='活動地址' width='180'>
  10. </el-table-column>
  11. <el-table-column prop='starttime' label='開始日期' width='180'>
  12. </el-table-column>
  13. <el-table-column prop='endtime' label='結(jié)束日期' width='180'>
  14. </el-table-column>
  15. </el-table>
  16. </template>
  17. <script>
  18. //將我們剛才書寫的gathering.js導(dǎo)入到該vue中,并聲明其作為變量gatheringApi
  19. import gatheringApi from '@/api/gathering'
  20. export default {
  21. data() {
  22. return {
  23. list: []
  24. }
  25. },
  26. created() {
  27. this.fetchData()
  28. },
  29. methods: {
  30. fetchData() {
  31. gatheringApi.getList().then(response => {
  32. this.list = response.data
  33. })
  34. }
  35. }
  36. }
  37. </script>

(3)修改router/index.js中的path和import('@/views/table/gathering')  其中path為訪問路徑,import為views文件夾中的table文件夾中的gathering.vue文件

  1. {
  2. path: '/gathering',
  3. component: Layout,
  4. children: [
  5. {
  6. path: 'index',
  7. name: 'Form',
  8. component: () => import('@/views/table/gathering'),
  9. meta: { title: '活動管理', icon: 'form' }
  10. }
  11. ]
  12. }

(4)reload工程 :   npm run dev

(5)plus:如果此時你在開發(fā)者工具中能正常接收數(shù)據(jù),但是無法顯示,考慮easy-mock中的接口設(shè)置,返回值是否為20000等。

  1. {
  2. 'code': 20000,
  3. 'flag': true,
  4. 'message': '@string',
  5. 'data|10': [{
  6. 'id': '@string',
  7. 'name': '@cword(8,12)',
  8. 'summary': '@cword(20,40)',
  9. 'detail': '@cword(20,40)',
  10. 'sponsor': '@string',
  11. 'image': '@image',
  12. 'starttime': '@date',
  13. 'endtime': '@date',
  14. 'address': '@county(true)',
  15. 'enrolltime': '@date',
  16. 'state': '@string',
  17. 'city': '@string'
  18. }]
  19. }

3.使用pagination實(shí)現(xiàn)分頁

我們已經(jīng)通過表格組件完成了列表的展示,接下來需要使用分頁組件完成分頁功能

一般對于分頁,都需要前端傳遞給后端兩個參數(shù):①當(dāng)前頁碼   ②每頁顯示條數(shù)

由于筆者項(xiàng)目中用到了Easy Mock,所以我們第一步應(yīng)該修改Easy Mock中的接口,產(chǎn)生更真實(shí)的模擬數(shù)據(jù)

(1)修改接口/gathering/gathering/search/{page}/{size} method:POST

(2)在gathering.js中添加新方法search,page當(dāng)前頁碼,size每頁顯示條數(shù),searchMap查詢條件

參考返回數(shù)據(jù)結(jié)構(gòu):

  1. <script>
  2. import gatheringApi from '@/api/gathering'
  3. export default {
  4. data() {
  5. return {
  6. total: 0 , //總記錄數(shù)
  7. list: [],
  8. currentPage: 1, //初始值為1
  9. pageSize: 10, //每頁顯示條數(shù)
  10. searchMap: {} //查詢條件
  11. }
  12. },
  13. created() {
  14. this.fetchData()
  15. },
  16. methods: {
  17. fetchData() {
  18. gatheringApi.search(this.currentPage,this.pageSize,this.searchMap).then(response => {
  19. this.list = response.data.rows
  20. this.total = response.data.total
  21. })
  22. }
  23. }
  24. }
  25. </script>

此時js部分(邏輯處理層)我們已經(jīng)完成,參考官方文檔完成分頁組件UI層:

http://element-cn.eleme.io/#/zh-CN/component/pagination

plus:@代表調(diào)用的方法,當(dāng)每頁顯示個數(shù)和當(dāng)前頁碼改變時會調(diào)用方法fetchData,:name代表屬性

  1. <el-pagination
  2. @size-change='fetchData'
  3. @current-change='fetchData'
  4. :current-page='currentPage'
  5. :page-sizes='[5, 10, 20]'
  6. :page-size='10'
  7. layout='total, sizes, prev, pager, next, jumper'
  8. :total='total'>
  9. </el-pagination>

plus:如果加入該<el-pagination>到<template>中報錯,考慮在<template>下添加一個<div>標(biāo)簽,因?yàn)?lt;template>下只能有一個標(biāo)簽加入后即只有一個<div>標(biāo)簽,否則將存在<el-table>標(biāo)簽和<el-pagination>標(biāo)簽,故報錯。

4. 使用分頁+條件查詢

需求:在分頁列表的基礎(chǔ)上實(shí)現(xiàn)條件查詢功能【使用到了表單控件、文本輸入控件、日期輸入控件、行內(nèi)表單等】

總體template代碼:

  1. <template>
  2. <div>
  3. <br/>
  4. <el-form :inline='true'>
  5. <el-form-item label='活動名稱'>
  6. <el-input v-model='searchMap.name'></el-input>
  7. </el-form-item>
  8. <el-form-item label='活動日期'>
  9. <el-date-picker v-model='searchMap.starttime_1' type='date' placeholder='選擇開始日期'>
  10. </el-date-picker>
  11. <el-date-picker v-model='searchMap.starttime_2' type='date' placeholder='選擇結(jié)束日期'>
  12. </el-date-picker>
  13. </el-form-item>
  14. <el-button @click='fetchData()' type='primary'>查詢</el-button>
  15. </el-form>
  16. ......
  17. </div>
  18. </template>

5-6. 彈出窗口、消息提示、select下拉框

需求:界面中加入'新增'按鈕,點(diǎn)擊彈出編輯窗口,點(diǎn)擊“修改”按鈕,關(guān)閉窗口并刷新表格,彈出提示(成功或失敗)

涉及知識點(diǎn):dialog組件、$message、switch開關(guān)、textarea文本域、form表單、select下拉框等

參考官方文檔:http://element-cn.eleme.io/#/zh-CN/component/dialog      (如何調(diào)出窗口并關(guān)閉窗口)

plus:注意!需要在return內(nèi)部聲明一個實(shí)體對象,用于存儲表單數(shù)據(jù) ,如:renturn{ pojo:{} }

(省略了一部分代碼)新增city.js,并導(dǎo)出(參考gathering.js)。在gathering.vue中導(dǎo)入city,并在打開視圖時就加載城市:

  1. created() {
  2. this.fetchData()
  3. cityApi.getList().then(response => {
  4. this.cityList = response.data
  5. })
  6. }

不要忘記在return中加入city這個實(shí)體對象,否則為空報錯。如return{ cityList:[] }

<template>視圖層代碼:

  1. <el-dialog title='編輯' :visible.sync='dialogFormVisible'>
  2. <el-form :model='form' label-width='100px'>
  3. <el-form-item label='活動名稱' :label-width='formLabelWidth'>
  4. <el-input v-model='pojo.name' placeholder='活動名稱'></el-input>
  5. </el-form-item>
  6. <el-form-item label='基本地址' :label-width='formLabelWidth'>
  7. <el-input v-model='pojo.address' placeholder='基本地址'></el-input>
  8. </el-form-item>
  9. <el-form-item label='開始日期' :label-width='formLabelWidth'>
  10. <el-date-picker v-model='pojo.starttime' type='date' placeholder='選擇開始日期'>
  11. </el-date-picker>
  12. </el-form-item>
  13. <el-form-item label='截至日期' :label-width='formLabelWidth'>
  14. <el-date-picker v-model='pojo.endtime' type='date' placeholder='選擇截至日期'>
  15. </el-date-picker>
  16. </el-form-item>
  17. <el-form-item label='報名截止' :label-width='formLabelWidth'>
  18. <el-date-picker v-model='pojo.enrolltime' type='date' placeholder='選擇截至日期'>
  19. </el-date-picker>
  20. </el-form-item>
  21. <el-form-item label='活動詳情' :label-width='formLabelWidth'>
  22. <el-input v-model='pojo.detail' type='textarea' :rows='3' placeholder='請輸入內(nèi)容'></el-input>
  23. </el-form-item>
  24. <el-form-item label='選擇城市'>
  25. <el-select v-model='pojo.city' placeholder='請選擇城市'>
  26. <el-option v-for='item in cityList' :key='item.value' :label='item.name' :value='item.id'>
  27. </el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label='是否可見'>
  31. <el-switch v-model='pojo.status' active-value='1' inactive-value='0' ></el-switch>
  32. </el-form-item>
  33. <el-form-item>
  34. <el-button type='primary'>保存</el-button>
  35. <el-button type='primary' @click='dialogFormVisible = false'>關(guān)閉</el-button>
  36. </el-form-item>
  37. </el-form>
  38. </el-dialog>

當(dāng)我們點(diǎn)擊保存按鈕的時候,則觸發(fā)幾個動作:①彈出消息提示框(消息內(nèi)容來自于響應(yīng)體中的message)  ②判斷消息狀態(tài)是否為true,為true則刷新列表(調(diào)用之前的刷新列表方法)  ③關(guān)閉窗口(設(shè)置dialogVisible = false),主要代碼如下:

  1. <template>
  2. ...
  3. <el-form-item>
  4. <el-button type='primary' @click='handlerSave()'>保存</el-button>
  5. <el-button type='primary' @click='dialogFormVisible = false'>關(guān)閉</el-button>
  6. </el-form-item>
  7. ...
  8. </template>
  9. <script>
  10. ...
  11. methods:{
  12. handlerSave(){
  13. gatheringApi.save(this.pojo).then(response => {
  14. alert(response.message)
  15. if(response.flag){ //如果成功
  16. this.fetchData(); //刷新列表
  17. }
  18. })
  19. this.dialogFormVisible=false //關(guān)閉窗口
  20. }
  21. }
  22. ...
  23. </script>

7、在列表顯示頁面右側(cè)執(zhí)行修改操作

需求:在表格的操作列增加'修改'按鈕,點(diǎn)擊修改按鈕彈出窗口并顯示數(shù)據(jù),點(diǎn)擊保存按鈕保存 修改并刷新表格。

需求分析:在點(diǎn)擊修改按鈕時候,首先需要打開窗口(修改dialogVisible = true),其次獲取點(diǎn)擊的數(shù)據(jù)行id,根據(jù)該id查詢數(shù)據(jù)并回顯,在點(diǎn)擊保存按鈕時候,執(zhí)行上面所講的保存操作。

由于我們使用Easy-Mock模擬數(shù)據(jù),我們首先需要修改根據(jù)id查詢數(shù)據(jù)的接口

(1)修改easymock接口/gathering/gathering/{id} (GET)

(2)修改src/api/gathering.js,增加方法定義

  1. findById(id) {
  2. return request({
  3. url: `/gathering/gathering/${id}`,
  4. method: 'get'
  5. })
  6. }

(3)修改src/views/table/gathering.vue的js腳本部分,新增handleEdit()方法

  1. handleEdit(id){
  2. this.dialogFormVisible=true //打開窗口
  3. gatheringApi.findById(id).then(response=>{
  4. if(response.flag){
  5. this.pojo=response.data
  6. }
  7. })
  8. }

(4)在表格table中增加模板列 ,模板列中防止修改按鈕,調(diào)用handleEdit方法

  1. <el-table-column
  2. label='操作'
  3. width='100'>
  4. <template slot-scope='scope'>
  5. <el-button @click='handleEdit(scope.row.id)' type='text' size='small'>修改</el-button>
  6. </template>
  7. </el-table-column>

fixed='right'的作用是定義此列為右固定列slot-scope用于指定當(dāng)前行的上下文。 

使用scope.row可以獲取行對象,此處我們需要獲得當(dāng)前行的id,故使用scope.row.id

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Vue.js 使用 ElementUI
循序漸進(jìn)VUE+Element 前端應(yīng)用開發(fā)(5)--- 表格列表頁面的查詢,列表展示和字段轉(zhuǎn)義處理
ElementUI的el-table的多選的取消選擇和篩選的取消所有過濾器之ref沖突問題
成功vue element-ui時間少8個小時解決
當(dāng)vue 頁面加載數(shù)據(jù)時顯示 加載loading
Vue環(huán)境搭建
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服