2013-01-10 11 views
7

EDYCJA: Dodano $ routeProvider i $ routeParams, ale $ routeParams.productId jest zawsze niezdefiniowane. To była moja pierwsza próba, ale pomyślałem, że to zła droga. W każdym razie to nie działa na razie.Kontroler AngularJS w zależności od parametru adresu URL:

Zaczynam się uczyć AngularJS i mam bardzo proste pytanie: W zależności od identyfikatora zawartego w URL, chciałbym wyświetlić inny rekord BD.

... 
<div ng-app=MyApp> 
    <div ng-controller="MyCtrl"> 
    {{ record }} 
    </div> 
</div> 
... 

Mój plik JavaScript:

var MyApp = angular.module("MyApp",[]); 

MyApp.config(['$routeProvider', function($routeProvider) { 
    $routeProvider 
    .when('/get/:productId', { 
     controller: 'MyCtrl' 
    }); 
}]) 

MyApp.controller('MyCtrl',['$scope','$routeParams','$http', 
    function($scope,$routeParams,$http) { 
    $http.get("/get/"+$routeParams.productId).success(function(data) { 
     $scope.record = data; 
    }); 
}]) 

Próbowałem użyć $ i $ routeParams routeProvider bez powodzenia.

Dziękuję z góry, Bill

+0

To zupełnie możliwe, że „get” w twoja ścieżka ma kolizję nazw, ponieważ jest to również czasownik HTTP i metoda $ http. – jpsimons

Odpowiedz

10

trzeba 2 rzeczy, dolarów routeParams wstrzykiwany w kontrolerze i stworzyć ważnej trasy z metody GET

MyApp.controller('MyCtrl',['$scope','$http',"$routeParams", 
     function($scope,$http,$routeParams) { 
      $http.get("/get/"+$routeParams.productId).success(function(data) { 
       $scope.record = data; 
     }); 
    }; 
+0

To, czego mi brakuje, to sposób implementacji identyfikatora łączenia kleju w adresie URL oraz $ routeParams.productId. Próbowałem coś jak $ routeProvider.when ("/ get /: productId", {controller: "MyCtrl"}) bez powodzenia. – billdangerous

+0

gdzie jest twoja konfiguracja routeProvider? http://docs.angularjs.org/tutorial/step_07 – mpm

+0

Zaktualizowany przez $ routeProvider – billdangerous

Powiązane problemy