2016-08-01 48 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'; 
}); 
相关问题