2016-08-01 49 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

進樣$控制器內部過濾器,並使用它像:

.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'; 
}); 
相關問題