如何在控制器范围内得到角度滤波器的返回值



是否可以在控制器范围内获得角度滤波器返回值。我需要将一个筛选器的返回值传递给另一个筛选器。我有一个定义如下的过滤器

     .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);
        }
    }
}

我需要在控制器范围内获取此筛选器的返回值。

在控制器中注入$filter并像这样使用:

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

您可以在控制器上注入$filter服务,并使用自定义过滤器:

.controller(["filter", function($filter) {
var somevariable = $filter("Filter2")(data, weight, waist);
});

参见文档

您需要将过滤器传递给控制器,例如:

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

最新更新