2013-09-25 20 views
51

Dies ist wahrscheinlich einfach, aber ich kann nichts in den Dokumenten finden und Googeln hat nicht geholfen. Ich versuche, einen Zustand in $stateProvider zu definieren, wo die URL, die ich auf dem Server treffen muss, um die benötigten Daten zu ziehen, von einem Status-URL-Parameter abhängt. Kurz gesagt, etwas wie:UI-Router Auflösung mit dynamischen Parametern

.state('recipes.category', { 
    url: '/:cat', 
    templateUrl: '/partials/recipes.category.html', 
    controller: 'RecipesCategoryCtrl', 
    resolve: { 
     category: function($http) { 
     return $http.get('/recipes/' + cat) 
      .then(function(data) { return data.data; }); 
     } 
    } 
    }) 

Das obige funktioniert nicht. Ich versuchte, $routeParams zu injizieren, um den benötigten cat Parameter zu erhalten, ohne Glück. Was ist der richtige Weg?

Antwort

102

Sie waren in der Nähe mit $routeParams. Wenn Sie den UI-Router verwenden, verwenden Sie stattdessen $stateParams. Dieser Code funktioniert für mich:

.state('recipes.category', { 
    url: '/:cat', 
    templateUrl: '/partials/recipes.category.html', 
    controller: 'RecipesCategoryCtrl', 
    resolve: { 
     category: ['$http','$stateParams', function($http, $stateParams) { 
      return $http.get('/recipes/' + $stateParams.cat) 
        .then(function(data) { return data.data; }); 
     }] 
    } 
}) 
+0

Arbeiten auch für mich, Vielen Dank! – kliron

+0

Und wie bekomme ich 'category' im Controller RecipesCategoryCtrl? – dumitru

+1

injizieren Sie es einfach: 'RecipesCategoryCtrl = Funktion ($ scope, Kategorie) {$ scope.cat = Kategorie}' – Reto

6

Für diejenigen, die ui-Router 1.0 $stateParamsis deprecated verwenden, können Sie stattdessen $transition$ verwenden soll:

.state('recipes.category', { 
 
    url: '/:cat', 
 
    templateUrl: '/partials/recipes.category.html', 
 
    controller: 'RecipesCategoryCtrl', 
 
    resolve: { 
 
     category: ['$http','$transition$', function($http, $transition$) { 
 
      return $http.get('/recipes/' + $transition$.params().cat) 
 
        .then(function(data) { return data.data; }); 
 
     }] 
 
    } 
 
})

Verwandte Themen