【问题标题】:Use $routeParams in service在服务中使用 $routeParams
【发布时间】:2014-03-23 04:30:39
【问题描述】:

我正在尝试将查询参数附加到我从 URL 获取的所有 API 调用中。

factory('Post', function ($resource, $routeParams) {
    return $resource('api/posts', {customer_id: $routeParams.customerId});
})

这在第一次使用 Post 服务时有效,但在第二次注入时,它已经被初始化并且正在使用第一个客户 ID,即使 URL 已更改。

如何按预期进行这项工作?

【问题讨论】:

    标签: angularjs angularjs-service


    【解决方案1】:

    因为服务是单例的。 这就是你得到这种行为的原因。

    我建议不要将 $routeParams 作为服务的初始化参数注入。 相反,将其注入控制器,然后使用 $routeParams 中的值作为参数调用服务的函数。

    代码可能是这样的:

    factory('Post', function ($resource) {
        return {
            doPost: function(customerId) {
                $resource('api/posts', {customer_id: customerId});
            }
        };
    });
    
    //...
    //in some controller
    Post.doPost($routeParams.customerId)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 2016-04-18
      • 2015-07-09
      • 2021-02-22
      • 1970-01-01
      相关资源
      最近更新 更多