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

标签 javascript angularjs angular-ui-router

我正在尝试使用 $urlRouterProvider 将我从父状态重定向到子状态,尽 pipe 状态是接受参数的 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 (父状态)定向位置 通过强制 url /?pageId=1 到参数化子状态 /:page?pageId。相反,它只是在 /home/ 后面附加一个斜杠。

这里有一个关于这种疯狂的非常不正常的 plnkr:http://plnkr.co/edit/XZ4jkhqzQmykIgx0CvH2?p=preview

谢谢!

最佳答案

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

关于javascript - AngularJS 将子状态参数插入 $urlRouterProvider (UI-Router),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30344161/

相关文章:

javascript - $scope.$watch 没有在指令中被触发

javascript - 如何为某些特定的非 DOM 事件创建 Rx observable

javascript - 为什么 JavaScript 中 "5"+ 2+3 和 2+3+ "5"不同?

javascript - AngularJS : concatenate depending on variable value

javascript - Angular.js 对 ng-repeat 的一项进行更改,导致所有其他项上的过滤器运行

javascript - 在 AngularJS 中通过状态链路由的正确方法是什么?

angular-ui-router - 当路由参数无效时, Angular 2 路由到 404 页面

javascript - AngularJS、ocLazyLoad 和 ui-router : How to load on demand without centralize 'state' on the main app. js 类

javascript - 在 parse.com 上检索关系字段中的对象

javascript - 匹配一个包含特定符号的单词