Javascript 如何使用othwerwise函数传递查询参数
考虑到以下javascript:Javascript 如何使用othwerwise函数传递查询参数,javascript,angularjs,angular-ui-router,angular-ui,Javascript,Angularjs,Angular Ui Router,Angular Ui,考虑到以下javascript: $stateProvider .state('search', { url: '/search?query', }) ; $urlRouterProvider.otherwise("search"); 当我进入页面时 base_url?query=x 我被重定向到 基本url/搜索 但是查询参数丢失了 是否有方法使用otherwise函数传递查询参数 有 UI路由器在这里有本机解决方案 否则不必是“url”字符串,它可以是一个函数 在本问
$stateProvider
.state('search', {
url: '/search?query',
})
;
$urlRouterProvider.otherwise("search");
当我进入页面时
base_url?query=x
我被重定向到
基本url/搜索
但是查询参数丢失了
是否有方法使用otherwise函数传递查询参数 有
UI路由器在这里有本机解决方案
否则
不必是“url”字符串,它可以是一个函数
在本问答中检查它的作用:
代码可以是这样的:
$urlRouterProvider.otherwise(function($injector, $location){
var state = $injector.get('$state');
state.go("search", $location.search()); // here we get { query: ... }
return $location.path();
});
$location.search()
将为我们提供params对象,它可能类似于:{query:…}
。我们接受它,并重定向到状态搜索与此参数
选中它您根本不需要抓取注射器和$state.go。
否则
方法的参数可以是URL路径,该路径可以包含参数
因此,在您的特定情况下,以下代码可以引导您找到base\u url/search?query=x
$urlRouterProvider.otherwise("/search?query=x");
或者,参数可以是返回URL路径的函数。如果您不确定它可能具有哪些URL参数,则只需从$location
获取参数,然后将其格式化为类似字符串的URL并返回
$urlRouterProvider.otherwise(function($injector, $location) {
var params = $location.search()
// format params to 'p1=v1&p2=v2' style
var formatted = Object.keys(params).map(function(key) {
return key + '=' + params[key]
}).join('&')
return '/search?' + formatted
});
在启用HTML5模式的情况下,它不适用于我。在plunkr中,它也被注释掉了。请你举一个启用HTML5的例子好吗?我被重定向了两次。我打印了console.log($location,$location.path(),$location.search());。我第一次得到“/”Object{vid:“Auto1”},然后是“/”Object{},我不是HTML5模式的粉丝或用户,但这里是调整后的版本:。简而言之:别忘了包括正确的“绝对”url。。。因为我们不是生活在安全的地方,在散列#之后进行安全路由……我认为没有必要编写return$location.path();。这会触发一个额外的状态重定向,而我们已经用state.go函数发出了一个状态重定向。最重要的是,正如[doc saysg():否则必须是:您要重定向到的url路径或返回url路径的函数规则。因此,我们必须(shuold)返回该路径…希望它能有所帮助。。。