繁体   English   中英

AngularJS通过URL ui-router轻松导航到参数化状态

[英]AngularJS simple navigating to parameterized state via URL ui-router

我试图通过导航到其关联的URL来进入ui-router父状态或子状态。 我知道, ui-sref是通过进入状态的证明,简单的方法, a链接,但只是打字状态的网址到浏览器似乎总是重定向我到我的$urlRouterProvider.otherwise()语句。

例如,我希望能够通过浏览器中的example.com/#/page进入page状态。 相反,我被重定向到otherwise

JS

angular.module('app', [ 'ui.router', 'subapp']);
angular.module('app').config(function($urlRouterProvider, $locationProvider) {
    }).controller('appCtrl', function(){});

angular.module('subapp', ['ui.router']);
angular.module('subapp').config(function($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.when('#/page/nothing', '/');

    $stateProvider
        .state('page', {
            url: '#/page',
            templateUrl: 'page.tpl.html'
         }) 
         .state('page.edit', {
             url: '/:myparameter',
             templateUrl: 'page-edit.tpl.html'
         });
    $urlRouterProvider.otherwise('/hello');
});

的index.html

<body ng-controller="appCtrl">
This is the index.html file<br>
<a href="#/page">Go to page state</a><br>
<a href="#/page/myparameter">Go to page child state with a parameter</a>
<ui-view></ui-view>

PLNKR: http ://plnkr.co/edit/HQziTB2CyJrCvbgzzuJm?p = preview

OTE我有一个subapp被注入主服务的应用程序,但我不认为这会有所作为,因为page国家仍然应该是“顶级”状态注入index.html的<ui-view>

如何做到这一点,以便可以直接导航到URL(甚至是带有参数的URL)? 文档说这是可能的,但我似乎无法使其正常工作。

您的参数网址错误,无法映射具有固定名称的网址,而其他具有参数原因的网址会导致疯狂的重写,以为这是一个变量

        $stateProvider
          .state('page', {
                url: '#/page',
                templateUrl: 'page.tpl.html'
            } 
         ).state('page.edit', {
                url: '/:myparameter',
                templateUrl: 'page-edit.tpl.html'
        });

通过以下方式使用URL:

        $stateProvider
          .state('page', {
                url: '/page',
                templateUrl: 'page.tpl.html'
            } 
         ).state('page.edit', {
                url: '/page/:myparameter',
                templateUrl: 'page-edit.tpl.html'
        });

我会说,你快到了。 一个更新的塞子 但是,尽管您的链接可以(应该)使用# (我们使用html5Mode

<a href="#/page">
<a href="#/page/myparameter">
<a href="#/page/11">

状态定义不应包含该符号:

.state('page', {
    // instead of this
    // url: '#/page',
    // we need this
    url: '/page',
    ...
.state('page.edit', {
    // instead of this
    // url: '#/:page',
    // we need this
    url: '/:page',

然后这些也将起作用:

<a ui-sref="page">
<a ui-sref="page.edit({page:123})">
<a ui-sref="page.edit({page:444})">

在这里检查

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM