是否可以将参数传递给角度工厂

时间:2015-07-20 14:26:28

标签: angularjs

我有一个角度资源工厂,我想知道是否可以将路径/查询参数传递给工厂函数。请查看代码中的注释,以获得更好的线索。

.factory("$Sentiments", function($resource, d3Service, ??URL-Parameters??) {
        var d3 = d3Service;
        var result = {};
        var treemap = d3.layout.treemap()
                .size([100, 100])
                .value(function (d) {
                    return d.activity + .35;
                })
                .sort(function (a, b) { 

                    // < ------------- HERE ---------- >
                    // I would like to sort based on a query parameter like so:
                    // if url is like http://localhost/#!/lala?sort=asc

                    return a.activity - b.activity != 0
                        ? a.activity - b.activity
                        : a.symbol < b.symbol ? -0.01 : 0.01;
                });

2 个答案:

答案 0 :(得分:0)

因为工厂是一个单例实例,你最好只返回一个接受参数的函数,

像:

.factory("$Sentiments", function($resource, d3Service) {
    var d3 = d3Service;

    return function(??URL-Parameters??){
         var treemap = d3.layout.treemap()
            .size([100, 100])
            .value(function (d) {
                return d.activity + .35;
            })
            .sort(function (a, b) { 

                // < ------------- HERE ---------- >
                // I would like to sort based on a query parameter like so:
                // if url is like http://localhost/#!/lala?sort=asc

                return a.activity - b.activity != 0
                    ? a.activity - b.activity
                    : a.symbol < b.symbol ? -0.01 : 0.01;
            });
}

答案 1 :(得分:0)

您可以通过注入$ location并使用它来解析URL来检测工厂中的URL参数,如下所示:

var sort = $location.search().sort;

然后你可以使用那个变量来做你的逻辑。