1、父-->子-->父。 父获子:this.parent.属性 注:有些反复在子请求的数据尽量放在父去请求回来,然后再传给子。
2、table中如需要弹提示框:show-overflow-tooltip。 3、标签页el-tab-pane中如需要弹(文字提示):<el-tooltip effect="dark":content="item.ruleName" placement="top-start" slot="label">。
3、:before-leave="beforeLeaveTab" 切换标签之前的钩子,若返回 false 或者返回 Promise 且被 reject,则阻止切换。 Function(activeName, oldActiveName)
4、table中涉及排序要前后端都排的话要用到@sort-change="sortChange"方法传参数给后端。
5、分页的排序只前端的话只会当前页排序(sortable: true )。 6、table表格固定高度滚动条 max-height
7、|| 与 ??的区别: (1)|| : ''、0、undefined、null; (2)?? :undefined、null;(但如果涉及运算或0 的时候建议用?? let i = 0 i = i ?? 12 (如果用i || 12 的话会一直都是false)
8、路由方式在浏览器新标签页打开: const newpage = this.$router.resolve({ name: 'AddTask', query: { type: 'add' } }) window.open(newpage.href, '_blank')
9、尽量不用a标签,一般用router-link
10、某个方法中如果使用了return的话,当调用该方法的时候要使用await fn()
11、使用this.$$nextTick(() => {this.a = b}) 的写法可以简化为 : await this.$nextTick() this.a = b
12、用到_transform转换url参数的 用于get/delete
13、对数据的处理:一般通过父组件传给子组件的数据,在子组件要深复制一份copyObj(data)
14、假如数据保存没有起作用则要用到promise
15、String 与to String()的区别? (1)同:String()和to String()都是将其他类型的变量转换为字符串类型。 (2)区别:toString()无法转换null和undefined
16、样式问题:如果修改了某个ui组件的样式不起作用可以用/deep/ .a
17、return 语句的作用是指定函数返回的值,return语句只能出现在函数体中。 (1)用return语句来终止一个函数的执行。 (2)如果return后面不返回值,则把值undefined赋给调用当前函数的表达式。 (3)return语句一般用法: a.返回函数结果:return a; b.阻止默认事件或者阻止往下执行:return false; 例如: a、在没有函数体包含的for循环中使用return 是会报错的:for(var i=0;i<4;i++){return 3;} (报错) b、在有函数体中使用:function fn(){ for(var i=0;i<4;i++){return 5;} } (5)
18、continue与break (1)continue用于跳出本次循环; (2)break用于跳出整个循环。
19、// 触发更新视图 this.set(arr[0],'a',1) arr[0].a=1 showDetail (index) { this.set(this.taskList[index], 'dialogVisible', true) }, 改变list set(obj,key,value) / vue.set(obj,key,value) b. 通过Object.assign(target, sources)方法,例: this.student.age=15 this.student = Object.assign({}, this.student)
20、form表单:show-message是否显示校验错误信息 21、 时间选择器: (1) popper-class="creativity-picker"修改样式 creativity-picker .el-button--text{ display: none !important; 去掉立刻按钮 } (2):picker-options="pickerOptions" 方法:例如禁掉之前的日期可写在这个方法里。
22、includes()方法:用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。 例如:arr=[1,2,3] arr.includes(2)? 1:2
23、路由传参:this.$route.query.targetPriceId, // 路由传来的id
24、forEach、map、filter、some、find、findIndex、reduce (1)forEach遍历,没有返回值;
(2)map:遍历,最适合做的是映射,有返回值;
(3)filter:筛选出符合条件的item,返回一个新的数组,不会改变原数组;
(4)some: 只要找到一个符合条件的,就回来报告true, 因此并不会全部遍历,不做多余的活(性能优良);
(5)find:返回第一个符合条件的对象item;
(6)findIndex: 返回第一个符合条件的索引值(序号);
(7)reduce: 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
arr.reduce(function(pre,cur,index,arr){.....}, init);
arr 表示原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。
var reduceList = [1,2,3,4,2]
a、递归累加:数组求和,求乘积了; const sum = reduceList.reduce((pre,cur) => { return pre+cur },0) //sum = 12
b、计算数组中每个元素出现的次数:
const times = reduceList.reduce((pre,cur) => {
if(cur in pre){
pre[cur]++
}else{
pre[cur]=1
}
return pre
},{}) // times = {1:1, 2:2, 3:1, 4:1} {}数组转对象
c、数组去重: (数组转数组)
(1) const arr = reduceList.reduce((pre,cur) => {
if( !pre.includes(cur) ){
return pre.concat(cur)
}else{
return pre
}
},[]) // arr=[1,2,3,4]
(2)const arr = reduceList.reduce((pre,cur) => { pre.indexOf(cur) === -1 && pre.push(cur) return pre },[])