介绍两种vue2和js配合使用方法的案例,让我们的代码更加灵活
最简单的方法使用 与、或、非,和 !! 等优化逻辑
场景适合时,使用 switch/case 代替 if/else
- switch (day) {
- case 0:
- dayText = '日';
- break;
- case 1:
- dayText = '一';
- break;
- case 2:
- dayText = '二';
- break;
- // ...........
- default:
- break;
- }
首先运行括号内的三目表达式,判断是否是新数据,是的话调用新增接口,否则调用更新,这两句很简单但是非常实用,能减少不少的冗余代码,并且逻辑更加明确
(this.isNew ? create : update)(this.data).then(res => {...})
但是缺点也很明显,比如我们有更多的可能判断后需要三个或以上的接口,此方法就不太适用了
通过提前设置好各个情况对应的值,再使用 get() 来获取对应的值,在之前我也介绍过map和set
首先大家都知道组件中定义 data 是函数形式,不是普通对象,并且在这个 data 中可以直接使用this.方法
- data(){
- return{
- num:this.getNum
- }
- },
- created(){ console.log(this.num) }
- methods: {
- getNum(){ console.log(1) }
- }
在created中打印一下这个 data 中的 num
这个函数中的 this 的指向是当前vue实例,因为 Vue 通过 data.call(vm, vm) 调用 data 函数
注意:在data中使用this的使用可以访问到 props 中的值 因为props是比data初始化快的,但是在data中的this不能访问data中的值 比如定义一个 a ,不能再 定义一个 b: this.a,b将会是 undefined
知道了以上的知识,我们可以定义一个类似于枚举的对象,其中 对应三种选择情况,调用接口
- getList: {
- 'A': [ 方法/接口, 'topName'],
- 'B': [ 方法/接口, 'name'],
- 'C': [ 方法/接口, 'bottomName']
- }
在我使用请求对应的接口时,分别需要一个 参数的 不同key值 ,相同的值
- activeList(title) {
- const query = { // 公共参数
- 'pageNum': this.pageNum,
- 'pageSize': this.pageSize,
- }
- query[this.getList[title][1]] = this.value // 单独参数
- return this.getList[title][0](query) // 返回请求
- },
- getNewData(title) {
- this.activeList(title).then(res => {
- // 处理数据
- })
- },
拆分一下方便我们维护,这样写主要是能减少大量的 if else 等,判断的出现