【发布时间】:2013-04-23 16:22:57
【问题描述】:
我在一个应用程序中使用 Angular,它基本上是一个带有搜索结果的表格。
可以通过像http://myapp/?client=clientName这样的url来访问这个表
为表格实例化一个角度控制器,除其他外,用于打开带有行详细信息的模态对话框(也是基于角度的 bootstrap-ui)。
这些行详细信息是通过一个服务带来的,该服务对两个控制器都有一些共同的功能:一个用于表格,一个用于模式。
现在,在这项服务中,我有以下 sn-p 需要检索:
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 吗?
谢谢!
更新:我已经成功了。问题正是我根本没有配置服务。我这样做是因为我认为这样会采用默认值,但它似乎不是这样工作的。
【问题讨论】:
-
你能分享 $location.absUrl() 的输出吗?这闻起来像一个正则表达式问题。
-
当然!这是
http://localhost:3000/results?utf8=%E2%9C%93&client=mond&type=&submittedLowerBound=&submittedUpperBound=&commit=Filter。这是后端的 Rails 应用程序。 -
你能分享一些你的解决方案的代码吗?我有同样的问题 $location.search() 返回 {}
标签: javascript service angularjs location