在Angular中使用id返回一个人

时间:2014-10-22 11:39:07

标签: angularjs angular-ui-router

我正在使用ui.router。我需要将id传递给控制器​​,以在详细页面上显示一个人。我已经能够将ID传递给控制器​​,但我不确定如何继续...

我想做一些像SELECT * FROM PEOPLE WHERE personID = $ stateParams.personID //抱歉使用SQL / Angular mashup,但我想你会理解我的意思。

有人能指出我正确的方向吗?

<a ui-sref="person({personID:{{people.people}}})" href="">

和控制器..

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

    // This outputs the id as expected for instance 1
    console.log($stateParams.personID);



    $scope.people =
    [
        {
            "personID":1,
            "firstName": "A",
            "lastName": "Grem"
        },
        {
            "personID":2,
            "firstName": "B",
            "lastName": "Grem"
        },
        {
            "personID":3,
            "firstName": "C",
            "lastName": "Grem"
        },
        {
            "personID":4,
            "firstName": "D",
            "lastName": "Grem"
        },
    ];
}]);

2 个答案:

答案 0 :(得分:1)

这是了解结果的最佳时机。

解决在加载状态之前执行的函数。 Resolve可以返回一个promise,例如$ http调用。可以使用解析名称将promise的结果注入您的控制器。

也可以注入决心。在这里,我注入$ stateParams来获取你的personID参数。使用param,我从REST api中获取人员数据。最后,当http调用返回时,我返回未解包的响应数据,这是在控制器中注入“resolvedPerson”时提供的数据。

$stateProvider.state('person', {
    url: '/person/:personID',
    resolve: { 
      resolvedPerson: function($stateParams) { 
        $http.get("/restapi/person/" + $stateParams.personID)
          .then(function(response) { return response.data; });
      }
    },
    templateUrl: 'person.html',
    controller: 'peopleCtrl'
});

myApp.controller('peopleCtrl', ['$scope', 'resolvedPerson', function( $scope, resolvedPerson ) {
  $scope.person = resolvedPerson;
}

链接:

<a ui-sref="person({ personID: people.person.personID })"> {{ people.person.name }}</a>

person.html

<pre>{{person}}</pre>

答案 1 :(得分:0)

我建议

href="personStateUrl/{{people.people}}" 

因为在您的配置中,您通常会声明状态('person')的网址,它应该看起来像这样

   .state('person', {
        url: '/person/:personID',
        ...
    });

感谢

获得你的身份
  var personID = $stateParams.personID;