2013-09-25 4 views
51

यह शायद आसान है लेकिन मुझे दस्तावेज़ों में कुछ भी नहीं मिला और गूगलिंग मदद नहीं मिली। मैं $stateProvider में एक राज्य को परिभाषित करने की कोशिश कर रहा हूं, जहां आवश्यक डेटा खींचने के लिए सर्वर पर मुझे जिस URL को हिट करने की आवश्यकता है, वह एक राज्य URL पैरामीटर पर निर्भर करता है। संक्षेप में, कुछ:ui-राउटर गतिशील मानकों के साथ हल

.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; }); 
     } 
    } 
    }) 

उपर्युक्त काम नहीं करता है। मैंने cat पैरामीटर को कोई किस्मत के साथ प्राप्त करने के लिए $routeParams इंजेक्शन देने का प्रयास किया। ऐसा करने का सही तरीका क्या है?

उत्तर

102

आप $routeParams के साथ थे। यदि आप यूई-राउटर का उपयोग $stateParams के बजाय करते हैं। इस कोड मेरे लिए काम करता है:

.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

काम करता है, धन्यवाद! – kliron

+0

और नियंत्रक व्यंजनों CategoryCtrl में 'श्रेणी' कैसे प्राप्त करें? – dumitru

+1

बस इसे इंजेक्ट करें: 'व्यंजनों CategoryCtrl = फ़ंक्शन ($ स्कोप, श्रेणी) {$ scope.cat = श्रेणी}' – Reto

6

जो लोग ui रूटर 1.0 $stateParamsis deprecated उपयोग कर रहे हैं के लिए, आप के बजाय $transition$ वस्तु का उपयोग करना चाहिए: बहुत

.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; }); 
 
     }] 
 
    } 
 
})
मेरे लिए

संबंधित मुद्दे