我在基本上是带有搜索结果的表的应用程序中使用angular。可以通过如下网址访问该表http://myapp/?client=clientName
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参数设置为过滤器。
client
如果在此调用的开头放置一个断点,$location.absUrl()则会看到该返回当前的浏览器URL(在我的情况下,该URL具有client我感兴趣的参数)。
$location.absUrl()
但是$location.search()返回一个空对象。
$location.search()
我正在将$ location服务注入服务中的默认值(即,不通过.config()调用对其进行配置)。而且,正如文档所说:
.config()
$ location服务解析浏览器地址栏中的URL(基于window.location),并使该URL可用于您的应用程序。
我想念什么吗?此时不应该解析URL吗?
谢谢!
更新: 我设法使其工作。问题是我根本没有配置所有服务。我这样做是因为我认为这样做会采用默认值,但是这似乎不是它的工作方式。
$locationProvider在应用程序的模块配置中进行配置之前,我遇到了同样的问题:
$locationProvider
appModule.config(['$locationProvider', function($locationProvider) { $locationProvider.html5Mode(true); }]);