$routeParams wird in anglejs undefiniert?

Lesezeit: 3 Minuten

Benutzer-Avatar
Beslinda N.

Ich rufe einen HTTP-Aufruf an eine JSON-Datei an. Im ersten Controller bekomme ich die Kategorien und im zweiten Controller bekomme ich die Kategorie mit einer bestimmten ID.

Die URL wird mit einer Kategorie-ID aktualisiert, aber $routeParams wird undefiniert angezeigt und kann nicht auf die Datei zugreifen.

Hier ist mein Code:

$stateProvider.state('categories', {
  url: '/category',
  templateUrl: 'templates/categories.html',
  controller: 'CategoriesCtrl'
});
$stateProvider.state('postC', {
  url: '/category/:category',
  templateUrl: 'templates/postsc.html',
  controller: 'PostCtrl'
});

Im Controller habe ich folgendes:

angular.module('myapp')

.controller('CategoriesCtrl', ['$scope', '$http',
  function($scope, $http) {
    $http.get("~/wp/v2/terms/category")
      .then(function(res) {
        $scope.categories = res.data;
      })
  }
])

.controller('PostCtrl', ['$scope', '$http', '$routeParams',
  function($scope, $http, $routeParams) {
    $http.get("~/wp/v2/terms/category/" + $routeParams.category).success(function(res) {

      $scope.current_category_id = $routeParams.category;
      console.log($routeParams.category);
      $scope.pageTitle="Posts in " + res.data.name + ':';
      document.querySelector('title').innerHTML = 'Category: ' + res.data.name + ' | AngularJS Demo Theme';

      $http.get("~/wp/v2/posts/?filter[category_name]=" + res.data.name).success(function(res) {
        $scope.posts = res.data;
        console.log($scope.posts);
      })

    })
  }
]);

Die Ansicht für die Kategorien ist wie folgt:

<div class="list">
  <a ng-repeat="category in categories" href="#/category/{{category.id}}" class="item item-thumbnail-left">
    <h2>{{category.name}}</h2>
  </a>
</div>

Und wenn ich auf die Kategorie klicke, wird die URL zu: http://localhost:8100/#/category/12aber die $stateparams.category in ~/wp/v2/terms/category/" + $routeParams.category ist undefiniert, daher kann die HTTP-Anfrage nicht durchgehen.

Ich kann es nicht verstehen, was übersehe ich?

Benutzer-Avatar
ftshtw

Versuchen Sie, sich zu ändern $routeParams mit $stateParams in jedem Fall. Sie verwenden offensichtlich ui-router die “Zustände” verwendet, während ngRouter verwendet “Routen”.

angular.module('myapp')

.controller('CategoriesCtrl', ['$scope', '$http',
  function($scope, $http) {
    $http.get("~/wp/v2/terms/category")
      .then(function(res) {
        $scope.categories = res.data;
      })
  }
])

.controller('PostCtrl', ['$scope', '$http', '$stateParams',
  function($scope, $http, $stateParams) {
    $http.get("~/wp/v2/terms/category/" + $stateParams.category).success(function(res) {

      $scope.current_category_id = $stateParams.category;
      console.log($stateParams.category);
      $scope.pageTitle="Posts in " + res.data.name + ':';
      document.querySelector('title').innerHTML = 'Category: ' + res.data.name + ' | AngularJS Demo Theme';

      $http.get("~/wp/v2/posts/?filter[category_name]=" + res.data.name).success(function(res) {
        $scope.posts = res.data;
        console.log($scope.posts);
      })

    })
  }
]);

  • Anstelle von $stateParams schreibe ich also $routeParams.. Ich werde es jetzt versuchen

    – Beslinda N.

    18. Dezember 2015 um 8:44 Uhr

  • Und auch versuchen console.log($stateParams); Vor $http.get... um alles zu sehen, bevor GET passiert, nur zur Info.

    – ftshtw

    18. Dezember 2015 um 8:46 Uhr

  • Perfekt. Ich danke dir sehr

    – Beslinda N.

    18. Dezember 2015 um 8:55 Uhr

Benutzer-Avatar
Quy

Vielleicht möchten Sie den Code in der Nähe noch einmal überprüfen

.controller('PostCtrl', ['$scope','$http','$rootScope', function($scope, $http, $routeParams)

it should be

.controller('PostCtrl', ['$scope','$http','$rootScope', '$routeParams', function($scope, $http, $rootScope, $routeParams)

Read more here on syntax of creating a Controller. You are missing injectors.

  • Ops yes that was a type. I fixed it but still I have the same prb

    – Beslinda N.

    Dec 18, 2015 at 8:33

  • Are you able to console.log the $routeParams variable? Besides, which one is undefined: $routeParams.category or $routeParams.categoryId?

    – Quy

    Dec 18, 2015 at 8:36

  • $routeParams.category is undefined (ignore the categoryid).I consolelog it but it is undefined

    – Beslinda N.

    Dec 18, 2015 at 8:42

  • Its incorrect answer..’ui.router’ doesn;t give information in $routeParams object..

    – Pankaj Parkar

    Dec 18, 2015 at 8:43


  • @PankajParkar – yeah, the code snippest has plenty of coding error. I have just correct one of them. Though it was very important, too.

    – Quy

    Dec 18, 2015 at 8:51

1093920cookie-check$routeParams wird in anglejs undefiniert?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy