element-ui


基本使用

https://element.eleme.cn/#/zh-CN/component/installation

現在的前端開發更多的是關注邏輯,很少關注樣式,因為ui框架提供給我們足夠多的ui組件

我們學習vue使用ui框架,更多的是element-ui和iview-ui

 

如何使用ui框架,我們從element-ui入手

首先我們要安裝element-ui框架的依賴

npm i element-ui -S

  • 第一步要在main.js中引入element-ui
  • 第二步use使用
  • 第三步要引入index.css文件
 1 import Vue from 'vue'
 2 // 相對路徑引入的App.vue文件
 3 import App from './App.vue'
 4 // 引入ui框架
 5 import elementUi from 'element-ui'
 6 //引入css
 7 import 'element-ui/lib/theme-chalk/index.css'
 8 //使用element-ui
 9 Vue.use(elementUi)
10 new Vue({
11     // 渲染節點
12     render: h => h(App),
13 }).$mount('#app')

然后我們就可以在全局使用element-ui

App.vue文件

 1 <template>
 2 <div>
 3  <el-input v-model="input" placeholder="請輸入內容"></el-input>
 4 </div>
 5 </template>
 6 <script>
 7   export default {
 8   }
 9 </script>
10 <style lang="scss" scoped>
11 </style>

相關的組件css樣式位置:node_modules/element-ui/lib/theme-chalk,里面有所有的css樣式。

 

如何正確使用ui框架

以CheckBox組件為例

 

 

 

首先提供給我們多種樣式進行選擇

 

 

 

其次是當前的組件可用的屬性

 

 

 

最后是當前的組件可用的事件監聽

總結:

   三步走,第一步先去找組件,第二步找對應的需要的樣式狀態,最后一步設置需要的屬性和事件(組件提供的可用的事件和屬性)

 

Form表單

由輸入框、選擇器、單選框、多選框等控件組成,用以收集、校驗、提交數據

 

如何進行校驗

首先要設置對應的rules規則

 

 1 rules: {
 2     name: [{
 3             required: true,
 4             message: '請輸入活動名稱',
 5             trigger: 'blur'
 6         },
 7         {
 8             min: 3,
 9             max: 5,
10             message: '長度在 3 到 5 個字符',
11             trigger: 'blur'
12         }
13     ],
14     region: [{
15         required: true,
16         message: '請選擇活動區域',
17         trigger: 'change'
18     }],
19     date1: [{
20         type: 'date',
21         required: true,
22         message: '請選擇日期',
23         trigger: 'change'
24     }],
25     date2: [{
26         type: 'date',
27         required: true,
28         message: '請選擇時間',
29         trigger: 'change'
30     }],
31     type: [{
32         type: 'array',
33         required: true,
34         message: '請至少選擇一個活動性質',
35         trigger: 'change'
36     }]
37 }

 

然后在我們的el-form組件上添加rules屬性

 

1 <el-form ref="formName"  :rules="rules" label-width="80px">

 

第三步要在我們的el-form組件上添加model屬性

model屬性接受的是一個對象,內容就是要和內部表單元素v-model綁定屬性

 

 1 form: {
 2     name: '',
 3     region: '',
 4     date1: '',
 5     date2: '',
 6     delivery: false,
 7     type: [],
 8     resource: '',
 9     desc: ''
10 }

 

1 <el-form ref="formName" :model="form" :rules="rules" label-width="80px">

 

第三步在對應的需要校驗的表單元素上添加對應prop屬性,注意三者統一,rules規則里面的屬性和prop和v-model的屬性必須都一樣

 

 1 <div class='info-box'>
 2     <el-form ref="formName" :model="form" :rules="rules" label-width="80px">
 3         <el-form-item label="活動名稱" prop='name'>
 4             <el-input v-model="form.name"></el-input>
 5         </el-form-item>
 6         <el-form-item label="活動區域" prop='region'>
 7             <el-select v-model="form.region" placeholder="請選擇活動區域">
 8                 <el-option label="區域一" value="shanghai"></el-option>
 9                 <el-option label="區域二" value="beijing"></el-option>
10             </el-select>
11         </el-form-item>
12         <el-form-item label="活動時間" prop='date1'>
13             <el-col :span="11">
14                 <el-date-picker type="date" placeholder="選擇日期" v-model="form.date1" style="width: 100%;"></el-date-picker>
15             </el-col>
16             <el-col class="line" :span="2">-</el-col>
17             <el-col :span="11">
18                 <el-time-picker placeholder="選擇時間" v-model="form.date2" style="width: 100%;"></el-time-picker>
19             </el-col>
20         </el-form-item>
21         <el-form-item label="即時配送">
22             <el-switch v-model="form.delivery"></el-switch>
23         </el-form-item>
24         <el-form-item label="活動性質" prop='type'>
25             <el-checkbox-group v-model="form.type">
26                 <el-checkbox label="美食/餐廳線上活動" name="type"></el-checkbox>
27                 <el-checkbox label="地推活動" name="type"></el-checkbox>
28                 <el-checkbox label="線下主題活動" name="type"></el-checkbox>
29                 <el-checkbox label="單純品牌曝光" name="type"></el-checkbox>
30             </el-checkbox-group>
31         </el-form-item>
32         <el-form-item label="特殊資源" prop='resource'>
33             <el-radio-group v-model="form.resource">
34                 <el-radio label="線上品牌商贊助"></el-radio>
35                 <el-radio label="線下場地免費"></el-radio>
36             </el-radio-group>
37         </el-form-item>
38         <el-form-item label="活動形式" prop='desc'>
39             <el-input type="textarea" v-model="form.desc"></el-input>
40         </el-form-item>
41         <el-form-item>
42             <el-button type="primary" @click="submitForm">立即創建</el-button>
43             <el-button>取消</el-button>
44         </el-form-item>
45     </el-form>
46 </div>

 

最后的設置提交校驗

 

 1   methods: {
 2      submitForm() {
 3     // refs選擇的是被校驗的表單from內部的表單,回調函數中valid是一個布爾值,如果是true則代表所有的表單元素都通過了校驗,如果有一個沒有通過校驗,會返回false
 4     this.$refs['formName'].validate((valid) => {
 5         if (valid) {
 6             alert('submit!');
 7         } else {
 8             console.log('error submit!!');
 9             return false;
10         }
11     });
12 },
13     }

 

 

 

 

如果加上校驗規則的表單元素會有紅色星號

提交時如果沒有通過

 

我們的表單校驗不僅僅只能進行必填校驗,還有自定義校驗

比如我們的name屬性校驗

 

 1 name: [{
 2         required: true,
 3         message: '請輸入活動名稱',
 4         trigger: 'blur'
 5     },
 6     {
 7         validator: validatePass,
 8         trigger: 'blur'
 9     }
10 ]

validator的值validatePass是一個函數

1 const validatePass = function (rule, value, callback) {
2     if (value.length !== 11) {
3         return callback(new Error("請輸入正確的手機號"))
4     }
5 }

rule返回的是一個json,內部是校驗的一些信息

vlaue返回的是輸入的文本內容

callback是回調函數

 

一個表單元素可以設置一個或者多個校驗規則,第一個參數都是關於校驗的,最后一個參數trigger指的是觸發方式有兩種,分別是blur和change,blur用於輸入框指的是當光標失去焦點的時候觸發,change是當內容進行改變的時候觸發。

 

 

Table表格

用於展示多條結構類似的數據,可對數據進行排序、篩選、對比或其他自定義操作

表格是組合el-table和el-table-column的組合

data屬性是必要屬性,接收的是對應的需要加載顯示的table數據

 table接收幾個必要屬性

data屬性時必要屬性,接收的是對應的需要加載顯示的table數據

 

 1 <template>
 2   <div>
 3       <el-table :data="tableData" style="width:100%">
 4            <el-table-column prop="date" label="日期" width="180">
 5       </el-table-column>
 6           <el-table-column prop="name" label="姓名" width="180">
 7       </el-table-column>
 8       <el-table-column  prop="address"  label="地址">
 9       </el-table-column>
10       </el-table>
11   </div>
12 </template>

 

內部是el-table-column組件,該組件上有幾個必要的屬性

  • prop屬性:需要加載的tableData中的json屬性值
  • label屬性:顯示的表頭名稱
  • width:當前列的寬度

 

 1 data(){
 2       return {
 3         tableData:[
 4           {
 5             date: '2016-05-02',
 6             name: '王小虎',
 7             address: '上海市普陀區金沙江路 1518 弄'
 8           }, 
 9            {
10             date: '2016-05-02',
11             name: '王小虎',
12             address: '上海市普陀區金沙江路 1518 弄'
13           }, 
14         ]
15       }
16     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM