UI-Router,我试图在URL中传递id,但我一无所获

时间:2016-09-06 02:16:59

标签: angularjs html5 angular-ui-router angular-ui state

我正在尝试在网址中传递ID,以便它可以被其他网页更具体地用于详细信息页面,但我一直都没有得到任何结果。网址是正确的路线,但身份证不会传入。我不知道我做错了什么。

这是我的app.js文件:

$stateProvider.state('contact', {

    url: '/contact',

    templateUrl: 'templates/contact.html',
    controller: 'mainController'

});

$stateProvider.state('contact.detail', {

    url: '/detail/:id',

    templateUrl: 'templates/contact.detail.html',
    controller: 'detailController'
});

这是我的控制器文件:

myApp.controller('detailController', ['$scope', '$stateParams', 
  function ($scope, $stateParams) {

    'use strict';

    $scope.peoples = $scope.peoples[$stateParams.id];


}]);

这是我的联系人文件:

<div class="container">
<div class="row">
    <div class="col-md-6">
        <table class="table table-striped">
            <thead>
                <th>First name</th>
                <th>Last name</th>
                <th>Age</th>
            </thead>
            <tbody>
                <tr ng-repeat="person in peoples">
                    <td><a ui-sref="contact.detail({id: person.id})">{{person.firstname}}</a></td>
                    <td>{{person.lastname}}</td>
                    <td>{{person.age}}</td>
                </tr>
            </tbody>
        </table>
    </div>
    <div class="col-md-6">
        <div ui-view></div>
    </div>
</div>

1 个答案:

答案 0 :(得分:2)

有一个working example

有一点是:

  

使用索引器进行搜索,例如$scope.peoples[someIdValue]找不到ID,而是位置(索引)

第二点是:

  

不要使用新值重新分配参考 $ scope.peoples (并丢失该引用)

所以,这应该是修复(使用 lodash 来查找人员)

.controller('detailController', ['$scope', '$stateParams', 
   function($scope, $stateParams) {

      //$scope.peoples = $scope.peoples[$stateParams.id];
      $scope.person = _.find($scope.peoples, {id: $stateParams.id});

  }])

检查action here

中的所有内容