2016-05-29 22 views
0

まあ、私はAngular Servciesとファクトリに疑問を抱き、return型に基づいて説明したチュートリアルを紹介しました。サービスから返される関数型を角で呼び出す方法

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; 

}); 

これを試してみました。 上記の場合、 "試した"文字列を取得するにはどうすればいいですか?

注:サービスの作成中に「this」を使用することにはかなり慣れています。

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

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

、その後のようなあなたのコントローラに返された値を取得する:しかし、ここで私の質問は、そのJS

+0

:http://stackoverflow.com/questions/14324451/angular-service-vs-angular-factory – charlietfl

答えて

0

で返された関数を呼び出すことについてあなたはこのようなサービスを定義する必要があり、むしろ、角にちょうどに関するサービスではありませんこの:

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

    $scope.serviceData = Service.output(); 

}); 
+0

こんにちはAminさん、私は執筆サービスのあなたの方法でかなり熟知しています。しかし、ここで私の質問は、単にJSの返された関数を呼び出すことに関するAngularのサービスに関するものではありません –

+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

関連する問題