次のサービスがあります。
angular.module('adminApp')
.factory('subjectService', function ($http) {
    return {
        get: function (testAccountId) {
            return $http({
                method: 'GET',
                url: '/api/Subjects/GetSelect',
                params: { testAccountId: testAccountId }
            });
        }
    }
});
次のコードは、http を直接呼び出すと機能しますが、サービスを使用すると機能します。
    $scope.$watch('selectedTestAccount', function () {
        if ($scope.selectedTestAccount != null) {
            $scope.myData = null;
            $http({
                method: 'GET',
                url: '/api/Subjects/GetSelect',
                params: { testAccountId: $scope.selectedTestAccount }
            }).success(function (result) {
                $scope.subjects = result;
                $scope.myData = null;
            });
            //subjectService.get($scope.selectedTestAccount)
            //    .then(function (result) {
            //        $scope.subjects = result;
            //        $scope.myData = null;
            //        alert($scope.subjects);
            //    }, function (result) {
            //        alert("Error: No data returned");
            //    });
        }
    });
この質問に関連しています。これはサービスを呼び出す正しい方法ですか。次のような別の提案があり、promise を使用していました。私はこれを行うべきですか:
services.factory('MultiRecipeLoader', ['Recipe', '$q',
   function(Recipe, $q) {
      return function() {
         var delay = $q.defer();
         Recipe.query(function(recipes) {
            delay.resolve(recipes);
         }, function() {
            delay.reject('Unable to fetch recipes');
         });
         return delay.promise;
      };
}]);