在$ resource构造url之前运行一个钩子?

Dan*_*zik 5 javascript angularjs angularjs-resource ngresource angularjs-http

我想 $ resource构造url 之前以编程方式更改路由参数.我无法使用angular的http拦截器来执行此操作,因为此时路由已经连接在一起.

给出一个Assortment.model.js

module.exports = function($resource) {
    return $resource("", {}, {
        get: {
            url: "/assortment/:model/:id",
            method: "GET",
            params: {id: "@id", model: "@model"} //< this needs to be uppercase
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

......和一些controller.js

["Supplier", function(Supplier) {
    Supplier.Assortment.get({ id: 5, model: "user" })
}]
Run Code Online (Sandbox Code Playgroud)

如何强制执行始终转换{model: "user"}为的挂钩{model: "User"}

Pan*_*kar 2

我想说你应该超越tranformRequest获取$resource部分。

代码

module.exports = function($resource) {
  return $resource("", {}, {
    get: {
      url: "/assortment/:model/:id",
      method: "GET",
      params: {
        id: "@id",
        model: "@model"
      },
      transformRequest: function(data, headers) {
        //here you could have the transformation of parameters
        console.log(data);
        return data;
      },
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

参考此处的答案,但您应该将转换请求部分保留在 $resource's 中get