Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 日期选择器作为服务工厂运行_Angularjs_Model View Controller_Datepicker_Factory_Service Factory - Fatal编程技术网

Angularjs 日期选择器作为服务工厂运行

Angularjs 日期选择器作为服务工厂运行,angularjs,model-view-controller,datepicker,factory,service-factory,Angularjs,Model View Controller,Datepicker,Factory,Service Factory,我犯了一个典型的错误,将所有业务逻辑放入控制器中,而不是使用服务 我有一堆函数,现在我想把它们放到服务中,并将它们注入到我的控制器中。 一般来说,有没有一个好的方法来做到这一点,以及如何做到这一点 例如,我有一个日期选择器,它是从今天起两周内设置的默认日期。我在控制器中解决了这个问题,就像 $scope.dt=function(){ $scope.dt=new Date(); $scope.numberOfDaysToAdd=14; $

我犯了一个典型的错误,将所有业务逻辑放入控制器中,而不是使用服务

我有一堆函数,现在我想把它们放到服务中,并将它们注入到我的控制器中。 一般来说,有没有一个好的方法来做到这一点,以及如何做到这一点

例如,我有一个日期选择器,它是从今天起两周内设置的默认日期。我在控制器中解决了这个问题,就像

$scope.dt=function(){
          $scope.dt=new Date();
          $scope.numberOfDaysToAdd=14;
          $scope.dt=$scope.dt.setDate($scope.dt.getDate()+$scope.numberOfDaysToAdd);
而在我的html ng model='dt'中。 我现在想把这个逻辑放到一个服务中。我想用一家工厂,我做了如下事情:

app.factory('Datepicker',[function(){

    var numberOfDaysToAdd=14;
    var addDays=new Date();
    addDays.daysToAdd=function(){
        addDays = addDays.setDate(addDays.getDate()+numberOfDaysToAdd);
        return addDays;
    };
    return addDays;
}]);
在控制器中

 $scope.dt = function(){
      addDays.daysToAdd()
  };
这并不像我预期的那样有效。这里有什么问题


干杯

您在将逻辑引入工厂的正确轨道上

这可能是几个问题之一。但由于您没有发布新控制器的所有代码,我首先要问:您是否将“Datepicker”服务注入了控制器

其次,您在控制器中使用服务的方式应该调用服务本身,因为服务返回一个对象:

假设您的服务名为datePickerService,控制器名为dateCtrl:

controllers.controller('dateCtrl', ['$scope', 'datePickerService', function($scope, datePickerService){
    $scope.dt = datePickerService;    //How you hook up the service to your controller
    datePickerService.addDays();   //How you could call the function as defined in your service 
}]);
希望这有帮助