在Angular JS $资源中对基本URL进行参数化

Rob*_*her 10 angularjs

我正在使用几个Angular JS $资源定义,所有这些定义都从配置服务中检索它们的基本URL.例如:

$resource(config.baseURL() + '/api/v2/foo/:id', {id: '@id'})

$resource(config.baseURL() + '/api/v2/bar/:id', {id: '@id'})
Run Code Online (Sandbox Code Playgroud)

这样做的原因是,首次加载应用程序时,可以通过查询字符串参数更改基本URL.

我发现(显然回想起来)$ resource使用的URL只被初始化一次,因此可以获得一个竞争条件,其中在处理基本URL查询字符串参数之前初始化特定$资源的URL.所以我尝试将$ resource声明更改为:

$resource(':baseURL/api/v2/foo/:id', {baseURL: config.baseURL(), id: '@id'})
Run Code Online (Sandbox Code Playgroud)

不幸的是,基本URL被转义 - //转换为%2F%2F- 因此整个URL无法正常工作.

有没有办法抑制该参数的转义?(或者一般来说,解决问题的方法可能更好)?

Xan*_*iff 0

为什么不使用 $location 服务呢?

例如,如何使用以下方法来处理基本 url,并且如果应用程序从本地主机运行,请包含端口号?此外,能否根据当前 URL 包含 http 或 https?

var host = $location.host();
if (host === "localhost")
  host += ":" + $location.port();
var url = $location.protocol() + "://" + host + "/whateverElseYouWantInThePath";
Run Code Online (Sandbox Code Playgroud)

然后url在需要的地方使用?