2016-05-29 2 views
0

Ну, я разъяснял свои сомнения по Угловым Сервисам и фабрикам и наткнулся на учебник, который описывает его на основе возвращаемых типов.Как мы называем тип функции, возвращаемый службой в угловом

В настоящее время я следующее:

angular.module("Training").service("Service", tryDis); 
angular.module("Training").factory("Factory", tryDis); 

function tryDis(){ 
    console.log("trying.."); 
    return "tried"; 
} 

, а затем у меня есть:

angular.module("Training").controller("Ctrl1", function($scope,Service, Factory){ 

    $scope.serviceData = Service; 
    $scope.factoryData = Factory; 

}); 

В учебнике говорится служба возвращает сам всю функцию, в то время как фабрика возвращает строку «попробовал». Это было очень хорошо.

Теперь я хочу сказать, что если у меня есть возвращаемый тип функции, и поскольку он не принимает никаких аргументов, я все равно каким-то образом верну его функцию. Так что я как-то тоже «пробовал» службу.

Ссылаясь на JS function.prototype.call(), я попытался

angular.module("Training").controller("Ctrl1", function($scope,Service, Factory){ 

    $scope.serviceData = this.call(Service);//also call(Service) 
    $scope.factoryData = Factory; 

}); 

Это не похоже на работу. Как мне получить строку «try» в приведенном выше случае. ??

Примечание: Я хорошо знаком с использованием «этого» при написании услуг. Но вот мой вопрос не только в отношении услуг, в Угловом, а его о вызове возвращаемой функции в JS

+0

родственный: http://stackoverflow.com/questions/14324451/angular-service-vs-angular-factory – charlietfl

ответ

0

Вы должны определить услугу, как это:

angular.module("Training").service("Service", tryDis); 

function tryDis(){ 
    this.output=function(){ 
     console.log("trying.."); 
     return "tried"; 
    }; 
} 

, а затем получить возвращаемое значение в вашем контроллере, как это:

angular.module("Training").controller("Ctrl1", function($scope,Service, Factory){ 

    $scope.serviceData = Service.output(); 

}); 
+0

Привет Амин, я довольно хорошо знаком с путем написания услуг. Но здесь мой вопрос касается не только услуг в Angular, но и его вызова функции возврата в JS –

+0

. Это идея использовать сервис в целом (хотя тот же результат может быть достигнут с использованием фабрики), это одна из отличий между Сервис и фабрика, службы не возвращают значение в своих глобальных областях. –

0

чтобы быть в состоянии сделать это, вы должны вернуть функцию от службы:

angular.module('test', []) 
 
    .controller('testCtrl', function(testService) { 
 
    console.log(testService()) 
 
    }) 
 
    .service('testService', function() { 
 
     return function() { 
 
     return 'tried'; 
 
     }; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="test" ng-controller="testCtrl"></div>

+0

Пробовал это уже: это не работает. Ошибка: служба не является функцией –

+0

@SaurabhTiwari Вы сказали * «если у меня есть возвращаемый тип функции» *, поэтому я думал, что служба возвращает функцию. Он должен фактически вернуть функцию. см. обновление. –

+0

сервис использует 'this' ... не нужно ничего возвращать. Ответ больше похож на фабрику – charlietfl

Смежные вопросы