Pip*_*tus 30 javascript service location angularjs
我在应用程序中使用角度,基本上是一个包含搜索结果的表格.可以通过类似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
};
Run Code Online (Sandbox Code Playgroud)
目标是知道表是否已将此特定client参数设置为过滤器.
如果我在这个调用的开头放了一个断点,我看到它$location.absUrl()返回当前的浏览器URL(在我的例子中,它有client我感兴趣的参数).
但是$location.search()返回一个空对象.
我使用默认值(即不通过.config()调用配置它)在我的服务中注入$ location服务.而且,正如医生所说:
$ location服务解析浏览器地址栏中的URL(基于window.location),并使URL可供您的应用程序使用.
我错过了什么吗?此时不应该解析URL吗?
谢谢!
更新:我设法让它工作.问题是我没有配置所有服务.我之所以这样做,是因为我认为以这种方式它会采取默认值,但似乎这不是它的工作方式.
Ril*_*ark 43
$locationProvider在我的应用程序的模块配置中配置之前,我遇到了同样的问题:
appModule.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(true);
}]);
Run Code Online (Sandbox Code Playgroud)
Pun*_*roi 12
如果您不想指定基本标记,则可以指定require base false.
myapp.config(function($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
});
Run Code Online (Sandbox Code Playgroud)
当我遇到这个问题时,除了设置配置之外,另一件对我有用的事情就是在查询字符串前添加"#".
因此,如果您是创建查询字符串的人,那么更改
myapp/?client=clientName
为
myapp/#?client=clientName
允许$ location.search()给我一个非空对象,然后您可以使用它来访问每个参数 $location.search()['client']
| 归档时间: |
|
| 查看次数: |
20440 次 |
| 最近记录: |