axios 提交数据前使用 transformRequest 或 qs 处理
项目: 《portal 页》
时间: 2018 年 5 月 23 日
问题: 使用 axios post 方式请求接口时,发送的数据是 json 形式
分析: 应使用健值对形式发送数据,可使用 transformRequest 或者 qs 库处理代码:
axios({
method: "post",
url: registerUrl,
data: registerInfo,
transformRequest: [
function(data) {
// Do whatever you want to transform the data
let ret = "";
for (let it in data) {
ret +=
encodeURIComponent(it) +
"=" +
encodeURIComponent(data[it]) +
"&";
}
return ret;
}
]
})
Injection “elFormItem” not found
项目:《portal页》
问题:项目中引用element-ui之后提示错误“Injection "elFormItem" not found ”
分析:百度搜索后发现可能是vue和element-ui的版本号对不上,把vue、vue-template、element-ui都升级到最新版本就可以了
element-ui 的 tooltip 为提示文字添加事件
问题:为element-ui的tooltip提示文字加点击事件不成功
场景:使用content来决定hover时的提示信息时,点击事件不成功,因为不可以为属性写事件,但使用slot插槽可以实现,因为slot插槽是真正插入了一个dom元素
代码:
// 使用content属性:
<el-tooltip class="item" effect="dark" content="Top Left 提示文字" placement="top-start">
<el-button>上左</el-button>
</el-tooltip>
// 使用slot插槽
<el-tooltip placement="top">
<div slot="content" @click="handleClick">多行信息<br/>第二行信息</div>
<el-button>Top center</el-button>
</el-tooltip>
ehcarts 数据图重新加载后数据合并
项目:《云乐道后台-数据统计分析》
问题:页面加载时先显示了一部分数据,筛选后再重载数据图原来的数据也在
分析:echarts默认会合并数据
解决办法: chart.setOption(option, true)
chart.setOption(option, notMerge, lazyUpdate)
option:图表的配置项和数据,具体见配置项手册。
notMerge:可选,是否不跟之前设置的option进行合并,默认为false,即合并。
lazyUpdate:可选,在设置完option后是否不立即更新图表,默认为false,即立即更新。
silent:可选,阻止调用 setOption 时抛出事件,默认为false,即抛出事件。
float 型数据相加后结果有误差
项目:《os数据统计》
问题:float型数据相加后结果会有一些误差
分析:因为js计算精度的问题,浮点型数据相加减都会有误差
解决办法:定义一个变量,存放每次相加产生的误差,在上一次结果和这一项相加之前先减去上次产生的误差,再相加就是没有误差的结果,之后再将此次相加产生的误差赋值给c
代码:
function arrSum(list) {
var len = list.length
var res = 0.0
// 定义c为浮点数相加产生的误差
var c = 0.0
for (var i = 0; i < len; i++) {
// 减去上一次产生的误差
var y = list[i] - c
var t = res + y
// 此次相加后产生的误差
c = (t - res) -y
res = t
}
return res
}
切换选项卡后需要重新加载 echarts
项目:《os数据统计》
问题:切换选项卡后,只有默认显示的那个选项卡页面有图表,其他切换后都没有
解决办法: 切换选项卡后需要重新加载echarts
代码:
$('#tab input').click(function() {
var index = $("#tab input").index(this)
$(this).addClass("active obtn btn-lg").siblings().removeClass("active obtn btn-lg")
$(".tab-content>div").eq(index).addClass("select").siblings().removeClass("select")
pubChart.resize()
areaChart.resize()
overYearsChart.resize()
})
城市区域等数据是 ajax 来的,所以给这些数据写事件要放到渲染函数中,渲染完成后再执行,因为异步
项目:《os数据统计》
问题:为页面ajax请求回来渲染的数据元素写事件不起作用,sources里查看元素是undefined
分析:页面数据是ajax异步请求回来的,所以在执行事件的时候还没有成功渲染元素
解决办法: 把相应事件写在渲染函数中
点击子元素会触发父元素事件,为子元素写阻止冒泡方法
项目:《portal页》
场景:为弹出遮罩层写事件,当点击遮罩层空白处时遮罩层消失,但点击遮罩层上的表单不消失
问题:当点击遮罩层上的表单时,遮罩层也会消失,
分析:这是因为子元素会为遮罩层写消失事件时会触发冒泡事件,所以要为子元素写阻止冒泡方法
解决方法:
stopBubble(e) {
e.stopPropagation(); //阻止冒泡
},
alert()一个拼接字符串结果是 NaN
项目:《portal页》
问题:alert一个拼接字符串 alert('请输入正确的手机号或带区号的电话号码!区号和电话号码之间可无连接符或用'-'连接') 结果是NaN
分析:alert内外层字符串与内层字符串同使用单引号引用,导致js从'-'处解析,将'-'前边的视为一个字符,减号后边的视为一个字符,将'-'视为减号,所以结果才会是NaN
解决办法:内层字符串与外层字符串不要相同
alert("请输入正确的手机号或带区号的电话号码!区号和电话号码之间可无连接符或用'-'连接")
jquery寻找父元素及父级元素
项目:《os数据统计》
问题:使用parent寻找元素的非直接父元素找不到
分析:parent是寻找元素的直接父元素,寻找元素的非直接父元素使用Parents
jquery为追加元素添加事件
项目:《os数据统计》
问题:为append方法添加进去的元素写事件,有的时候没有响应,有的时候只响应一次
分析:jquery动态添加的元素要使用on进行绑定,但监听的时候不能监听动态的,要监听静态元素(动态元素的父元素,body等)
解决办法:
$('body').on('click', element, function() {
})
设置单元格宽度不起作用
项目:《os数据统计》
问题:在td中使用width设置table的单元格宽度不起作用
分析:表格默认布局为自动布局,在自动表格布局中,列的宽度是由列单元格中没有折行的最宽的内容设定的。
解决办法:为table设置 table-layout属性为fixed;
<table table-layout="fixed"></table>