0

私は古典的な初心者の間違いを犯し、サービスを使用する代わりに、すべてのビジネス ロジックをコントローラーに入れました。

私は今、サービスに入れたい関数がたくさんあり、これをコントローラーに挿入します。一般的に、そうする良い方法はありますか?

たとえば、今日から 2 週間後にデフォルトの日付が設定されている日付ピッカーがあります。私はコントローラでこれを解決しました

$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()
  };

これは私が期待するようには機能しません。ここで何が問題なのですか?

乾杯

4

1 に答える 1

0

ロジックをファクトリに配置する正しい軌道に乗っています!

これはいくつかの問題の 1 つです。しかし、新しいコントローラーのすべてのコードを投稿していないので、最初に質問します。「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 
}]);

お役に立てれば!

于 2014-10-07T15:26:32.743 に答える