Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 将momentjs的代码重构为一个函数_Angularjs_Angularjs Scope_Refactoring_Momentjs_Angular Moment - Fatal编程技术网

Angularjs 将momentjs的代码重构为一个函数

Angularjs 将momentjs的代码重构为一个函数,angularjs,angularjs-scope,refactoring,momentjs,angular-moment,Angularjs,Angularjs Scope,Refactoring,Momentjs,Angular Moment,我有两个函数prev()和next(),它们的代码几乎相同 有没有办法把这两个函数合并成一个函数 <button id="prev-search-button" ng-click="prev()"><</button> <button id="next-search-button" ng-click="next()">></button> $scope.prev = function(){ var search = $sc

我有两个函数prev()和next(),它们的代码几乎相同

有没有办法把这两个函数合并成一个函数

<button id="prev-search-button" ng-click="prev()"><</button>  
<button id="next-search-button" ng-click="next()">></button> 

$scope.prev = function(){ 
  var search = $scope.inputDate ? $scope.inputDate: moment() ;  
  $scope.day = moment(search).subtract(1, 'days').format('DD'); 
  $scope.month=moment(search).subtract(1, 'days').format('MM'); 
};

$scope.next = function(){
  var search = $scope.inputDate ? $scope.inputDate: moment();  
  $scope.day = moment(search).add(1, 'days').format('DD');
  $scope.month = moment(search).add(1, 'days').format('MM'); 
};

$scope.prev=函数(){
var search=$scope.inputDate?$scope.inputDate:moment();
$scope.day=时刻(搜索)。减去(1,'days')。格式('DD');
$scope.month=时刻(搜索)。减去(1,'days')。格式('MM');
};
$scope.next=函数(){
var search=$scope.inputDate?$scope.inputDate:moment();
$scope.day=时刻(搜索)。添加(1,'days')。格式('DD');
$scope.month=时刻(搜索)。添加(1,'days')。格式('MM');
};
我尝试了以下方法,但不起作用

<button id="prev-search-button" ng-click="prevAdd(subtract)"><</button> 
<button id="prev-search-button" ng-click="prevAdd(add)"><</button>  

$scope.prevAdd = function(arg){  
  var search = $scope.inputDate ? $scope.inputDate: moment() ;  
  $scope.day = moment(search).arg(1, 'days').format('DD'); 
  $scope.month=moment(search).arg(1, 'days').format('MM'); 
};

首先:
ng click=“prevAdd(subtract)”
ng click=“prevAdd(add)”
如果错误,请将参数作为字符串或整数传递,如
ng click=“prevAdd('subtract')”
ng click=“prevAdd('add')”

Second:
时刻(搜索)中没有方法
arg
。arg
,它只有
添加
减去
。所以下面的说法是错误的:

$scope.day = moment(search).arg(1, 'days').format('DD'); 
$scope.month=moment(search).arg(1, 'days').format('MM');
应写为:

  if(arg === 'add') {
     $scope.day = moment(search).add(1, 'days').format('DD'); 
     $scope.month=moment(search).add(1, 'days').format('MM');
  } 
  if(arg === 'subtract') {
     $scope.day = moment(search).subtract(1, 'days').format('DD'); 
     $scope.month=moment(search).subtract(1, 'days').format('MM');
  }  
请使用以下最终修改代码:


<button id="prev-search-button" ng-click="prevAdd('subtract')"><</button> 
<button id="prev-search-button" ng-click="prevAdd('add')"><</button>  

$scope.prevAdd = function(arg){  
  var search = $scope.inputDate ? $scope.inputDate: moment() ; 
  if(arg === 'add') {
     $scope.day = moment(search).add(1, 'days').format('DD'); 
     $scope.month=moment(search).add(1, 'days').format('MM');
  } 
  if(arg === 'subtract') {
     $scope.day = moment(search).subtract(1, 'days').format('DD'); 
     $scope.month=moment(search).subtract(1, 'days').format('MM');
  }  
};