一尘不染

AngularJS $定位服务显然无法解析URL?

angularjs

我在基本上是带有搜索结果的表的应用程序中使用angular。可以通过如下网址访问该表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(在我的情况下,该URL具有client我感兴趣的参数)。

但是$location.search()返回一个空对象。

我正在将$ location服务注入服务中的默认值(即,不通过.config()调用对其进行配置)。而且,正如文档所说:

$ location服务解析浏览器地址栏中的URL(基于window.location),并使该URL可用于您的应用程序。

我想念什么吗?此时不应该解析URL吗?

谢谢!


更新: 我设法使其工作。问题是我根本没有配置所有服务。我这样做是因为我认为这样做会采用默认值,但是这似乎不是它的工作方式。


阅读 158

收藏
2020-07-04

共1个答案

一尘不染

$locationProvider在应用程序的模块配置中进行配置之前,我遇到了同样的问题:

appModule.config(['$locationProvider', function($locationProvider) {
        $locationProvider.html5Mode(true);
    }]);
2020-07-04