2017-05-19 9 views
0

サービス中のファクトリ関数を呼び出そうとしています。anglejsでサービス中のファクトリ関数を呼び出す

私の工場は、次のようになります。

function LMSAppFactory($http) { 
     var ajaxRequest = 'processRequest.jsp?'; 

     return {  
      getTableData: getTableData, 
     }; 

     function getTableData(params, callback) { 
      alert(1); 
      $http.get(ajaxRequest + 'requestType=getRecords'+params+'&value=10').then(function (response) { 
       callback(response.data[1].LMSRecords, response.data[0].LMSRecordsCount); 
      }); 
     } 

    } 

マイサービス

$scope.branchSearch = function (code){ 
    alert(code); 
    getData: LMSAppFactory.getTableData; 
} 

私はbranchSearch関数内で値を取得しますが、工場の機能に呼び出していないです。

私の間違いはどこですか?

+0

この構文は 'getData:LMSAppFactory.getTableData'とは何ですか?これはファクトリ関数を呼び出さない。代わりに、 'LMSAppFactory.getTableData(code)'のように直接呼び出す必要があります。 – Aruna

+0

本当にありがとうございますが、どうしてあなたはまだコールバックの仕組みに従っていますか?プロミスベースのワークフローははるかに優れています(クイックGoogle検索でその情報が得られます)。 '$ http.get'コールを返すだけで、あなたのサービスから約束を返すことができます。いずれにせよ、あなたのネットワーク要求が投げるかもしれないエラーを処理しないでください。 – ste2425

答えて

0

コードが不完全であるが、私はあなたが以下のコードで何をしようとして得ることはありません(呼び出し?割り当ては?あなたはlabel statementが、なぜを定義しようとしている?)

$scope.branchSearch = function (code){ 
    alert(code); 
    getData: LMSAppFactory.getTableData; // <-- HERE 
} 

あなたの場合有効な呼び出しが

$scope.branchSearch = function (code){ 
     alert(code); 
     var params = {} //pass the parameters here 
     LMSAppFactory.getTableData(params, function(val1, val2){ 
      //callback behaviour here 
     }) 
} 
+0

ありがとうSir @Karim –

0

あなたの工場宣言することができgetTableDataを呼び出したいのは、右のようですが、そのコールに問題があります。、ここgetData: LMSAppFactory.getTableData;、あなたが工場を呼び出していません。

また、工場内にLMSAppFactoryファクトリをまだ注入していない場合は、注入する必要があります。同様に:

$scope.branchSearch = function (code){ 
     alert(code); 
     var inputParams = {}; // fill params 
     LMSAppFactory.getTableData(inputParams, callback) 
} 

function callback(lmsRecords, lmsCount){ 
    // call back implementaion 
} 
+1

ありがとう@anoop sir –

+0

喜んでお手伝いします。 :) – anoop

0

あなただけそれがコントローラへの参照ですaasigningあなたファクトリ関数を呼び出すされていないためです。

angular.module('yourmodule') 
    .service('yourBranchService', ['LMSAppFactory', function(LMSAppFactory) { 
      //service code 
     } 
]); 

そして、最後にサービスでは、ファクトリメソッドへの呼び出しを行います。

あなたがしたい場合は、このようにそれをすべきで、工場からデータを取得するための$scope.branchSearch方法:

$scope.branchSearch = function (code){ 
    $scope.data = LMSAppFactory.getTableData(params, code); // <= i assume -code- is your calllback 
} 

あなたが関数を呼び出し、それにあなたは、呼び出し元関数からfgot codeパラメータを送信する。この方法

関連する問題