2016-10-06 2 views
0

Ich nahm eine AngularJS-Lektion. Aber Angular versteht keine Links zu den Details, wie Template/1, wenn ich auf einen Link im Browser klicke. Wenn ich jedoch die URL in der Adressleiste des Browsers eingeben, funktioniert es einwandfrei. Wie kann ich das beheben?Route nicht verstehen

App.js

angular.module('templateStore.templates', ['ngRoute']) 
.config(['$routeProvider', function($routeProvider) { 
    $routeProvider 
     .when('/templates', { 
      templateUrl: 'templates/templates.html', 
      controller: 'TemplatesCtrl' 
    }) 
    .when('/template/:templateId', { 
     templateUrl: 'templates/template-details.html', 
     controller: 'TemplateDetailsCtrl' 
    }) 
    .otherwise({ 
     redirectTo: '/templates' 
    });  
}]) 
.controller('TemplatesCtrl', ['$scope', function($scope) { 
    console.log('This is Template '); 
}]) 
.controller('TemplateDetailsCtrl', ['$scope', '$http', function($scope, $http) { 
    console.log('This is Template Details'); 
}]) 
.controller('TemplateDetailsCtrl', ['$scope', '$http', function($scope, $http) { 
    console.log('This is Template Details'); 
}]); 

Templates.html (Hauptseite)

<div class="col-md-4 template"> 
    <h3>Template 4</h3> 
    <img src="img/4.jpg"> 
    <h4>$29.99</h4> 
    <a class="btn btn-primary btn-block" href="#/template/1">Details</a>  
</div> 

Attached is the image in which I highlighted the url in the address bar after clicking it

+0

Benötigen Sie die '#' in 'href =" #/template/1 "'? –

+0

Nun, dann versuche es zu entfernen und zu sehen. Sie müssen manchmal mit Versuchen und Fehlern gehen, besonders wenn Sie etwas Neues ausprobieren –

+0

Ich weiß es nicht. Ich folgte einfach einem Tutorial. Ohne die # oder #! es funktioniert nicht. –

Antwort

0
.when('/template/:templateId', { 
      templateUrl: 'templates/template-details.html', 
       controller: 'TemplateDetailsCtrl' 
      }) 

App.controller('TemplateDetailsCtrl', ['$scope', '$http', 
'$routeParams', function($scope, $http, $routeParams) {   
    console.log($routeParams.templateId); }]); 

Demo Ja, Sie benötigen #/te Mplate/2 und über seinem Arbeitscode. kann dies Ihnen helfen ....

+0

Danke, aber es hat nicht funktioniert. Wenn ich auf den Link zur Detailseite geklickt habe, ist dies die neue URL, die in der Adressleiste angezeigt wird: templates #% 2Ftemplate% 2F1. Ich denke eckig liest oder versteht die Route nicht. –