使用 ui-router 创建路由参数

Posted

技术标签:

【中文标题】使用 ui-router 创建路由参数【英文标题】:creating a route Param using ui-router 【发布时间】:2015-11-21 02:51:11 【问题描述】:

我无法设置和维护路由参数。当我设置参数时。它去正确的地方。但是,如果我更改路线,内容不会改变。我试图制作一个视图对象,但 home.name 状态不会用这种方法呈现。我只能使用两个绝对路径获取要显示的模板。

Could not resolve '#/home/Adam Harvey' from state 'home'

我找到了一个很棒的链接https://github.com/angular-ui/ui-router/wiki/URL-Routing#stateparams-service

开始:我用 ng-repeat 创建了一个简单的列表。这是一个简短的例子

$scope.iterants =  
   [
       
        name: 'Adam Harvey',
        type: 'Hotel',
        dates: '01/21/2015-01/22/2015',
        location: 'Rockville Maryland',
        status: 'Confirmed'
        ,
        
        name: 'Jana Harvey',
        type: 'Hotel',
        dates: '01/21/2015-01/22/2015',
        location: 'Rockville Maryland',
        status: 'Confirmed'
        
    ];

在我的 html 模板中,我想在每个人的姓名上放置一个 ui-sref 作为链接,以便在另一个模板上查看他们。

          <td><a ui-sref="itinerary.namename:person.details">person.name</a></td>

在我的配置中,我这样设置,控制器通过了 $stateParams

  .config(function config( $stateProvider ) 
  $stateProvider.state( 'home.name', 
    url: '/home/:name',
    views: 
      "main": 
        controller: 'AboutCtrl',
        templateUrl: 'src/app/about/about.tpl.html'
      
    ,
      data: pageTitle:'About'
  );
)

.controller( 'AboutCtrl', function AboutCtrl( $scope, $stateParams ) 
  $stateParams.name;
);

在家庭控制器中。我已经像这样设置了我的配置和控制器......

.config(function config( $stateProvider ) 
  $stateProvider.state( 'home', 
    url: '/home',
    views: 
      "main@": 
        controller: 'HomeCtrl',
        templateUrl: 'src/app/home/home.tpl.html'
      ,
        resolve: [
            name: ['$stateParams', function($stateParams)
                return $stateParams.name;
            ]
        ]
    ,
    data: pageTitle: 'Home' 
  );
)

更新

【问题讨论】:

不应该在 home.name 中解析 name 而不是 home 吗?另外,我相信 resolve 需要一个对象,而不是一个数组。 【参考方案1】:

问题在于您对ui-sref 指令的使用。您必须将状态名称和参数作为对象传递,如下所示:

<td><a ui-sref="home.name( name: person.name )">person.name</a></td>

【讨论】:

非常感谢。我刚刚在文档上重新阅读了一遍。但是,您如何访问该模板?我正在更改参数。我确实对孩子下了决心,但它没有把我送到 home.name 的 templateUrl。 很难说没有看到你的其余代码。您的 home.name 状态将其视图放在主视图中名为 main 的 ui-view 中。我的猜测是您的意思是在根模板中引用 main,因此“main”实际上应该是“main@”。 github.com/angular-ui/ui-router/wiki/… 对你所说的有了更好的理解。添加了 在主路由上创建了绝对路径。这使我可以访问。但是,我需要使用两个绝对路径来完成这项工作。试图删除 home.name 上的视图对象,但这会产生错误。 一个新问题可能有助于使事情更清楚。我很乐意提供帮助。

以上是关于使用 ui-router 创建路由参数的主要内容,如果未能解决你的问题,请参考以下文章

angularjs ui-router传值

ui-router 传递参数

UI-Router 不使用 ui-sref 注册动态创建的元素

ionic里面ui-router的一些奇葩问题

AngularJS ui-router (嵌套路由)的简单学习

将 Angular UI-Router 与 Phonegap 一起使用