我在一个应用程序中使用 angular,它基本上是一个带有搜索结果的表。可以通过类似的 url 访问此表http://myapp/?client=clientName
为表格实例化一个角度控制器,除其他外,用于打开带有行详细信息的模态对话框(也是基于角度的 bootstrap-ui)。
这些行细节是通过一个服务带来的,该服务对两个控制器都有一些共同的功能:一个用于表格,一个用于模式。
现在,在此服务中,我有以下片段要检索:
service.fetchRelatedElements = function(element, cb) {
var url = '/search.json?results=20&type='+element.type;
if ($location.search()['client']) {
url += '&client=' + $location.search('client');
}
return doFetch(url, cb); // actual server json GET
};
目标是了解表是否已经将此特定client
参数集设置为过滤器。
如果我在此调用的开头放置一个断点,我会看到它$location.absUrl()
返回当前浏览器 URL(在我的例子中,它具有client
我感兴趣的参数)。
但$location.search()
返回一个空对象。
我在我的服务中使用默认值注入 $location 服务(也就是说,不是通过.config()
调用来配置它)。而且,正如医生所说:
$location 服务解析浏览器地址栏中的 URL(基于 window.location)并使 URL 可用于您的应用程序。
我错过了什么吗?此时不应该解析 URL 吗?
谢谢!
更新:我设法使它工作。问题正是我根本没有配置服务。我这样做是因为我认为这样会采用默认值,但似乎这不是它的工作方式。