我正在使用几个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无法正常工作.
有没有办法抑制该参数的转义?(或者一般来说,解决问题的方法可能更好)?
为什么不使用 $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在需要的地方使用?
| 归档时间: |
|
| 查看次数: |
5918 次 |
| 最近记录: |