如何将使用Moment.js的Angular中prev()和next()函数合并?
当然可以合并!
完全没问题,这两个函数逻辑高度相似,只是日期调整的方向不同(一个减1天,一个加1天),咱们可以把它们合并成一个通用函数,既减少代码冗余,又方便后续维护。
具体实现步骤:
创建通用的日期调整函数
咱们定义一个adjustDate函数,接收一个参数来控制日期调整的方向(比如-1代表“前一天”,1代表“后一天”),把重复的日期处理逻辑都放到这个函数里:$scope.adjustDate = function(direction) { // 获取当前要调整的日期,优先用inputDate,没有的话用当前日期 var search = $scope.inputDate ? $scope.inputDate : moment(); // 统一处理日期增减 var adjustedDate = moment(search).add(direction, 'days'); // 赋值给对应的scope变量 $scope.day = adjustedDate.format('DD'); $scope.month = adjustedDate.format('MM'); // 这里可以继续写你原来函数里的其他逻辑,比如年份、其他日期相关变量的赋值 };修改按钮的点击事件
把原来的prev()和next()调用换成通用函数,传入对应的方向参数:<button id="prev-search-button" ng-click="adjustDate(-1)"><<</button> <button id="next-search-button" ng-click="adjustDate(1)">>></button>
这样做的好处:
- 消除重复代码,避免以后修改日期逻辑时要同时改两个函数
- 逻辑更集中,维护起来更省心
- 如果以后需要调整增减的天数(比如改成增减一周),只需要修改参数或者函数内部的逻辑即可
内容的提问来源于stack exchange,提问作者user21
相关产品推荐
相关产品推荐

