2016-08-01 16 views
0

コントローラスコープで角度フィルタの戻り値を取得することは可能ですか?あるフィルタの戻り値を別のフィルタに渡す必要があります。私は以下のように定義されたフィルタを持っていますコントローラのスコープ内で角度フィルタの戻り値を取得する方法

 .filter('Filter', Filter) 
function Filter($filter) { 

    return FilterFn; 

    function FilterFn(data, weight, waist) { 
     var factor1 = weight * 1.082 + 94.42; 
     var factor2 = waist * 4.15; 
     var leanBodyMass = factor1 - factor2; 
     var bodyFatWeight = weight - leanBodyMass; 
     var bodyFatResults = bodyFatWeight * 100/weight; 
     // return Params 
     if (bodyFatResults === "-Infinity") { 
      // $filter('Filter2')(0); 
      return 0; 
     } else if (parseFloat(bodyFatResults) < 0) { 
      // $filter('Filter2')(2); 
      return 2; 
     } else { 
      // $filter('Filter2')(bodyFatResults.toFixed(1)); 
      return bodyFatResults.toFixed(1); 
     } 
    } 
} 

このフィルタの戻り値をコントローラスコープで取得する必要があります。

+0

一般的にフィルタは、ビューの値をわずかにフォーマットされた方法で表示するために使用されるため、フィルタはスコープを気にしません。スコープ内でフォーマットされた値を使用する理由を知りたいのですか? –

+0

フォーマットされた値に基づいてステータスを設定します。 – durai

+0

次に、以下の2つの答えに示すように手動でフィルタを使用してください。 –

答えて

2

あなたのコントローラの内部を注入$フィルタと、そのようにそれを使用します。

.controller('Controller', function($filter) { 
    var filtered = $filter('Filter2')(data, weight, waist); 
}); 
0

あなたは、コントローラの$フィルタサービスを挿入し、それをあなたのカスタムフィルタを使用することができます。

.controller(["filter", function($filter) { 

var somevariable = $filter("Filter2")(data, weight, waist); 

}); 

を参照してくださいdocs

0

フィルタをコントローラに渡す必要があります。例:

var myApp = angular.module('myApp',[]); 

myApp.controller('GreetingController', ['$scope', function($scope) { 
    $scope.foo = $filter('yourFilter')(); 
}]) 

.filter('yourFilter', function() { 
    return 'hello'; 
}); 
関連する問題