8
votes

Angular $ routeparams retourne objet vide

J'ai été coincé pendant environ une journée sur un problème que je ne peux pas voir à travers.

J'ai le code suivant dans un fichier users.js.coffee: xxx

Pourquoi $ voudrait-il être un objet vide? Si j'appelle $ route.current.params dans une vue, il affiche les paramètres appropriés. Mais pas dans le contrôleur. De plus, je ne peux pas appeler $ route.current.params dans le contrôleur, car "actuel" n'est pas encore défini.


5 commentaires

Ce n'est pas lié à votre question, mais je ne pense pas que vous puissiez utiliser to_json lorsque vous utilisez répond_with . Vous devez fournir un objet et votre contrôleur appellera le répondeur approprié en fonction du format demandé.


Je pense que vous avez généralement raison, à moins que je n'ai besoin de saisir une association comme @ user.to_json (include:: vidéos). Je viens de le faire expliciter jusqu'à ce que je puisse comprendre pourquoi je ne reçois pas la réponse appropriée.


La manière préférée d'inclure des associations dans une réponse JSON consiste à remplacer as_json dans votre modèle. Quant à votre problème, pouvez-vous définir votre navigateur pour enregistrer les demandes XHR (Chrome le fait) et publier ici exactement ce qui revient?


Ah, tu as raison. Mon erreur. J'ai défini le navigateur pour enregistrer les demandes XHR et l'objet renvoyé est un tableau JSON de tous mes utilisateurs. Je posterai un exemple ci-dessus (mais pas les données d'utilisateur réelles).


Cela m'a eu lieu - est-ce que cela m'a permis d'appeler un objet JSON dans templateurl? Tout ce que j'ai lu montre des fichiers HTML partiels appelés ...


4 Réponses :


0
votes

Vos itinéraires indiquent à votre itinéraire API. Ils devraient être un chemin vers le modèle pour rendre à la place:

App.controller 'UsersIndexCtrl',['$scope','$location','User', ($scope, $location, User) ->

  $scope.users = User.query()

  $scope.onClickHandlerToRoute = (user)->
    $location.path "path/to/show/user/#{user.id}"


0 commentaires

7
votes

J'ai eu le même problème. Le routage ne fonctionnera pas s'il n'y a pas de NG-View . Il suffit d'avoir une vue ng-vue vous obtiendrez vos $ roueparams.

considère


0 commentaires

1
votes

On dirait que $ roulettes d'initialisation du contrôleur aux contrôleurs à l'extérieur de ceux routés via $ RouteProvider / NG-View. (Au moins en 1.0,8 angulaire)

Si vous souhaitez accéder aux paramètres de route dans ces contrôleurs externes, vous pouvez utiliser $ emplacement.search ().


0 commentaires

2
votes

Si vous utilisez un contrôleur externe vers le contrôleur routé-to NG-View (comme une barre de topbar ou une page de page), vous devez vous abonner au message EMIT '$ PitechangesUCSUCSUCSUD'.

Le succès de la route change est asynchrone si vous n'êtes pas le contrôleur de réception. Cette réponse donne une réponse plus complète: $ rouleparams est vide dans le contrôleur principal

mais cette est le TLDR; xxx


0 commentaires