AngularJS $ http.get与ngRoute如何列出详细信息

时间:2018-06-09 21:03:17

标签: javascript angularjs ngroute angularjs-http

也许有人会帮助我。我在angularjs中编写了一个应用程序,我有一个名为list.html的文件,它从jsonplaceholder中检索帖子列表并列出它们,并附有帖子详细信息的链接。在$ routeParams中,我传递所选的id的id并将其拾起。不幸的是,我不知道如何下载帖子的详细信息并将其显示在details.html文件中。如果我想删除一些东西,例如,我编写了例如$ scope.deletePost作为函数并给出了一个id,但是如何列出我不知道的细节。

// routing.js

var myApp = angular.module('myApp', ["ngRoute"])
myApp.config(['$routeProvider',
    function ($routeProvider) {
        $routeProvider
            .when('/test', {
                templateUrl: '/event/example.html',
                controller: 'exampleController'
            }, null)
            .when('/list', {
                templateUrl: '/event/list.html',
                controller: 'exampleController'
            }, null)
            .when('/test-list', {
                templateUrl: '/test/list.html',
                controller: 'testController'
            }, null)
            .when('/test/:id', {
                templateUrl: '/test/details.html',
                controller: 'testController'
            }, null)
    }
]);

// controller.js

angular.module('myApp').controller('testController', function ($scope, $http, $routeParams) {
    $http.get('https://jsonplaceholder.typicode.com/posts').then(function (response) {
        $scope.posts = response.data;
    });

    $scope.id = $routeParams.id;


});

// details.html

<div data-ng-controller="testController">
    {{data}}
</div>

// list.html

<div data-ng-controller="testController">
    <ul>
        <li ng-repeat="post in posts">
          Tytuł: {{post.title}} <a href="#!test/{{post.id}}" >Show</a>
        </li>
    </ul>
</div>

1 个答案:

答案 0 :(得分:1)

Check out this plunkr

您只需使用ng-href传递详细信息,然后使用$routeParams捕获控制器。我希望这可以帮助你找到你想要的东西。

var app  = angular.module( 'mainApp', ['ngRoute'] );

 app.config( function( $routeProvider ) {

 $routeProvider
 .when( '/main', {
    templateUrl: 'list.html',
    controller: 'listCtrl'
  })
  .when('/detail/:id', {
    templateUrl: 'detail.html',
    controller: 'detailCtrl'
  })
  .otherwise({
    redirectTo: '/main'
  });
});

app.controller( 'listCtrl', function( $scope, $http) {
    $http.get('https://jsonplaceholder.typicode.com/posts')
    .then(function(res){
      $scope.data = res.data;
    })

});

app.controller( 'detailCtrl', function( $scope,$http, $routeParams) {
  $scope.id = $routeParams.id;
   $http.get('https://jsonplaceholder.typicode.com/posts/'+$scope.id)
    .then(function(res){
      $scope.data = res.data;
    })
});