2016-03-01 1 views
0

Dans le nœud, voici comment je définis ma route de détails (rendu en tant que jade et envoyer).location.path() pas de redirection vers la page

app.get('/details', function(req, res){ 

     jade.renderFile('details.jade', function(err, html){ 
       if(err){ 
       console.log(err); 
       } 
       res.send(html); 
      }); 

     }); 

En jade avec 'blah' est cliqué puis appelle la fonction navigateToPath avec params.

a(ng-click="navigateToPath(date_obj_key, part)") blah 

En mode angulaire, cette fonction devrait aller à ce chemin. Le chemin de l'URL change dans le navigateur, mais il ne REDIRECT PAS à la page. Aide (oui j'injectais le service de localisation)

$scope.navigateToPath = function(date, part){ 
    var path = '/details?date='+date+'&part_type='+part; 
    $location.path('/details').replace(); //also tried $location.url(path) 
    $scope.apply(); //also tried $scope.$apply and $rootScope.$apply as func 
    console.log($location.path()); 
} 
+0

Vous êtes sûr que votre "/ details" est reconnu comme Client Route.js? $ location.path ('/ details') - devrait fonctionner exactement comme ça – Prasad

+0

J'utilise node.js pour le routage. oui quand je vais à cette route cela fonctionne manuellement mais ça ne marche pas sur l'événement click – shapiro

+1

Essayez $ window.location = path et assurez-vous d'injecter $ window. –

Répondre

3

J'utilise des outils de développement FireFox (F12) et mettre un point d'arrêt sur où je window.location $ dans mon projet et regardé les valeurs de $ window.location et ce ce qu'il montre:

enter image description here

il semble que cela fonctionnerait. à la fois pour un emplacement dans le même dossier ou sous-dossier ainsi que d'aller à un site Web complètement différent.

$window.location = $window.location.origin + path 

ou

$window.location = <whatever website you want to go to> 

Dans mon cas, je suis juste en utilisant le window.location $ pour appeler un service de repos pour télécharger un fichier que l'utilisateur sélectionné à partir d'une grille ui-tout en restant sur la même page. et cela a peut-être fonctionné pour moi parce que mon scénario est un peu différent de ce que je pense. donc tout ce que je devais faire était

$window.location = "../../services" + "<path to my rest service>" + $scope.shortCode + "/" + $scope.wireInstSelectedRow.entity.fileName; 

@shapiro Je ne sais pas pourquoi cela ne fonctionne pas

$location.path('/details').replace(); 

J'ai essayé la même chose à l'origine dans mon projet et sur la base des documents: https://docs.angularjs.org/api/ng/service/ $ location Il semble que cela fonctionne et à quoi il est censé être utilisé, mais ce que j'ai remarqué est qu'il mettrait un caractère '#' dans l'URL avant de mettre le chemin que je voulais prendre, ce qui l'empêchait d'aller à cette page. Quoi qu'il en soit pour moi, il semble aussi longtemps que vous allez à une page html qui est dans le même dossier ou sous-dossier juste faire

$window.location = <the path you want to go to>; 

est une bonne solution ... au moins il a fait l'affaire pour moi . J'espère que cela t'aides.