下面几个问题就是在项目中所遇到的问题。在这里总结一下,相信这个总结必定会有帮助。html
使用element ui dailog弹出框时,弹出框并不在vue挂载的app里 ,自定义样式覆盖不了默认样式。vue
把自定义样式写在了全局下,并使用了父级元素包裹,样式生效。canvas
引用element UI 里的dialog弹框,弹框出现才会加载里面的Dom,js在Dom尚未时,已经开始执行,没法获取并操做Dom元素数组
不使用element UI 里到dialog弹框,手写html元素,固定Dom结构,让先加载Dom,后执行 js操做元素。浏览器
element UI dig log弹框,使用了open回调,动态生成了Dom以后,执行open里的方法,open里的方法是当即执行bash
不把js写在父组件内,单独抽离为子组件便可,点击出现弹框直接加载子组件,就不会出现执行问题app
element ui 给表单加入验证,在el-col标签里面加入dom
1. <el-form ref="inHosForm" label-width="80px" label-position="left" class="form" :model="inHosData" :rules="rules">
// :model 是定义v-model表单可输入的字段,:rules 是验证规则
2. <el-col :span="12" class="collabel">
<el-form-item label="可靠程度" prop="reliable">
<el-input size="mini" class="inputWidth1" placeholder="请填写" v-if="!previewMode" v-model="inHosData.reliable"></el-input>
</el-form-item>
<span v-if="previewMode">{{inHosData.reliable}}</span>
</el-col>
3. data () {
return {
rules: {
reliable: [
{ required: true, message: '请输入可靠程度', trigger: 'blur' }
// required为小红星标,意思是必填项
//message为表单未填时出来的提示红字
//trigger是element ui 里 的方法,输入框时用 blur ,isSlect多选框时用到change
],
methods:{
4. saveMedical () {
// $refs['这里的必定是:model中定义的']
this.$refs['inHosForm'].validate((valid) => {
if (valid) {} // valid 表单未填写为false,填写为true
}
}
}
复制代码
element UI 里的dialog弹框,内容过多时,须要滚动条,全局下给.el-dialog__body 设置加上overflow:hidden不起做用,不会出现滚动条,隐藏的内容展现不了异步
elemnet ui 里的diglog弹框 ,内容过多时,全局下给.el-dialog__body 设置overflow:auto;便可函数
element ui 里有一些默认样式并非很好,须要本身定义一些样式,本身定义样式覆盖不了原来的
在标签内定义样式,写行内样式
<el-col :span=24 style="margin:20px"></el-col>
复制代码
element ui 里面的el-botton,设置禁用时,设置属性disabled,设置时不起做用
<el-button :disabled="false">默认按钮</el-button>
复制代码
disabled接受布尔值,=后面不要加引号
<el-button :disabled=false>默认按钮</el-button>
复制代码
canvas描线位置不精确,偏离正常位置,base64不能正常转为img图片,this指向当前canvas实例、没有指向vue实例,须要改变this指向,而且保证以前this指向canvas实例
抽离canvas封装为组件,引入组件调用,不被影响
发现表单验证功能未100%完成,有缺陷,当前页表单填写完后,不能滑动,发现this指向的是vue实例,须要指向swiper实例,当前并无挂载相关swiper实例,
须要改变this指向,而且保证以前的this指向vue实例
阅读swiper API文档。
base64转成图片,this指向构造函数,不能指向 vu e实例,转换this,定义变量 let that = this,转换this,完成在线签名功能。
</el-col>
</el-row>
<el-dialog
title="签名"
:visible.sync="centerDialogVisible"
width="85%"
center>
<sign @draw_save="getSignImg"></sign>
</el-dialog>
</div>
复制代码
<div class="canva" @click="isShow">
methods:{
isShow(){
this.centerDialogVisible = true
//...
}
}
复制代码
API.diseaseByTod(params).then((res) => {
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.icd_code,
chapter_icd: item.fields.icd_code,
illness_name: item.fields.illness,
level: 4
})
})
console.log(res.data)
})
复制代码
向后台传递的参数,每次都是isSlect.chapter取的值
<li v-for="(isSlect,index) in isSerthe" :key="index" class="lilists" @click="diseaseByCod(isSlect.chapter,isSlect.level)">
<span class="fontSize">{{isSlect.chapter_icd}}</span><span class="fontSizes">{{isSlect.illness_name}}<span class="el-icon-arrow-right" v-if="isShow"></span>
<input type="checkbox" v-if="isShaow" name="1" value="isSlect" class="radio"/>
</span>
</li>
复制代码
diseaseCoding () {
API.diseaseCoding().then((res) => {
this.isShaow = false
this.isShow = true
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.chapter,
chapter_icd: item.fields.chapter_range,
illness_name: item.fields.illnessname,
level: 1
})
})
console.log(this.isSerthe)
})
},
diseaseByCod (value, number) {
if (number === 1) {
this.isShaow = false
this.isShow = true
this.centerDialogVisible = true
let params = {
chapter: value
}
API.diseaseByCod(params).then((res) => {
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.chapter_range,
chapter_icd: item.fields.chapter_range,
illness_name: item.fields.illnessname,
level: 2
})
console.log(item.fields.chapter_range)
})
console.log(res.data)
})
} else if (number === 2) {
this.isShaow = false
this.isShow = true
let params = {
chapter_range: value
}
API.diseaseByDod(params).then((res) => {
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.icd_code,
chapter_icd: item.fields.icd_code,
illness_name: item.fields.illness,
level: 3
})
})
console.log(res.data)
})
} else if (number === 3) {
this.isShaow = true
this.isShow = false
let params = {
icd_code: value
}
console.log(value)
API.diseaseByTod(params).then((res) => {
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.icd_code,
chapter_icd: item.fields.icd_code,
illness_name: item.fields.illness,
level: 4
})
})
console.log(res.data)
})
}
}
复制代码
console.log(_) alert(...) debugger排错 方法里alert看有没有执行,代码执行的顺序,同步异步执行过程,加载Dom元素时是否是js已经执行,变量取不到值...
也没必要要写一步看一步效果。写一行代码就去看一眼效果,本身内心应该有画面这个下一步效果会是怎么样。这样不至于效率慢,也不会欠下了别人的指望。
好了上面就是在项目中总结遇到的问题。
未完待续。。。