AngularJS将子状态参数插入$ urlRouterProvider(UI-Router)

时间:2015-05-20 08:24:23

标签: javascript angularjs angular-ui-router

我正在尝试使用$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

谢谢!

1 个答案:

答案 0 :(得分:1)

a working plunker

我不确定为什么上述表示法不起作用(如果打算跳过或不跳过),但是通过这种调整它将起作用:

$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