我正在尝试使用$urlRouterProvider
将我从父状态重定向到子状态,尽管子视图是接受参数的URL。 (儿童网址:/:page?pageId
)。
我只是希望通过从www.example.com/home
输入来输入应用程序,然后$urlRouterProvider
应接管路由。
代码看起来像这样:
$urlRouterProvider.when('/home', '/home/?pageId=1');
$stateProvider.state('home', {
url: '/home',
abstract: true,
templateUrl: 'home.tpl.html'
}).state('home.page', {
url: '/:page?pageId',
templateUrl: '...'
});
正如您所看到的,我希望通过使用$urlRouterProvider
,我可以将位置从/home
(父状态)指向参数化的子项通过强制网址/:page?pageId
来声明/?pageId=1
。相反,它只是向/home/
附加一个尾部斜杠。
这是一种非常不正常的疯狂:http://plnkr.co/edit/XZ4jkhqzQmykIgx0CvH2?p=preview
谢谢!
答案 0 :(得分:1)
我不确定为什么上述表示法不起作用(如果打算跳过或不跳过),但是通过这种调整它将起作用:
$stateProvider.state('home', {
url: '/home',
abstract: true,
templateUrl: 'home.html',
controller: 'controller',
}).state('home.child', {
url: '/:page?pageId',
templateUrl: 'childtemplate.html',
params : { // HERE we do define the defaults
pageId: {value: 1}, // these would serve as a starting value
}
});
所以,我们在这里有效地做的是从url中声明默认值,但是在params: {}
设置中:
...
params : {
pageId: {value: 1},
}
检查here