2016-11-22 3 views
1

Wie kann ich auf die URL in der setTitle anonyme Funktion zugreifen?In Angular Route Provider Einstellung Seitentitel basierend auf URL

Ich habe etwas wie unten in meiner Route Setup für Angular. Die meisten Routen zeigen auf den gleichen Controller, es gibt einige Unterschiede im Controller, aber das Problem ist im Wesentlichen doppelte Routen. Ich möchte also zu etwas wechseln, das nur einen Eintrag in der Tabelle hat, aber ich muss SetWindowTitle ändern, um den Titel basierend auf dem URL-Parameter festzulegen. Der Code, den ich angezeigt habe, funktioniert nicht, da producttype var nicht definiert ist.

Aktuelle Code:

.config(['$routeProvider', 
    function ($routeProvider) { 

    $routeProvider 
     .when('/mypage/round', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product round') 
       } 
      }, 
     }) 
     .when('/mypage/square', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product square') 
       } 
      }, 
     }) 
    // etc... 

Wollen Sie so etwas wie:

$routeProvider 
     .when('/mypage/:producttype', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product ' + producttype) 
       } 
      }, 
     }) 

Antwort

1

können wir die Route URL in der Entschlossenheit Funktion durch '$ route' injiziert wird. Hier ist, was Sie tun müssen:

$routeProvider 
    .when('/mypage/:producttype', { 
     templateUrl: 'product', 
     controller: 'productController', 
     resolve: { 
      setTitle: function($route) { 
       SetWindowTitle('product ' + $route.current.params.producttype) 
      } 
     }, 
    }) 

$ route.current - Consist aller aktuellen Route URL Details, wie die Steuerung, ursprünglichen Pfad, Pfad, Template url usw.

+0

Danke - funktioniert gut, beachten Sie, dass es wegen der Verkleinerung kaputt war, als ich es versuchte. Hoffe, es macht Ihnen nichts aus, ich habe Ihre Antwort aktualisiert, um das zu bedecken. – miltonb

+0

Ihre Begrüßung, yeah Sie müssen es in Array, die eigentlich die Praxis sein sollte, aber musste Ihnen nur die Antwort geben, indem Sie Ihr Code-Snippet, so übersprungen es. –