6
votes

L'acheminement angularjs ne fonctionne pas correctement dans PhoneGap

J'ai battu ma tête contre le mur en essayant de comprendre pourquoi l'acheminement de l'angularjs ne fonctionnera pas dans PhoneGap pour moi. J'ai la configuration de tous les fichiers correctement et je ne reçois aucune erreur. J'essaie de changer l'URL à l'aide du service $ Emplacement.url directement à partir de Angular. Ainsi, lorsque vous appuyez sur un DIV, le contrôleur disposera de $ Emplacement.url ("profil") par exemple et rien ne se passera. J'ai essayé la solution trouvée dans ce Stackoverflow mais ça ne fonctionne pas pour moi . Est-ce que je fais quelque chose de mal ou y a-t-il un meilleur moyen d'aborder cela? Voici le routage que j'ai configuré xxx

un contrôleur d'échantillon serait: xxx

comme toujours toute aide est très appréciée.


7 commentaires

Avez-vous essayé par ex. $ emplacement.url ("# / profil") ?


J'ai et toujours pas de dés. L'URL semble changer bien, mais angulaire ne semble pas saisir le modèle et le placer dans le NGView.


Avez-vous essayé d'utiliser le HTML5Mode?


Si vous mettez un itinéraire «sinon», est-ce que cela se fait correspondre à cet itinéraire?


J'ai finalement pu comprendre. Ce que je dois faire, c'est utiliser la fenêtre.Location et obtenir le répertoire racine. Puisque PhoneGap tire le fichier d'index du fichier: // puis je dois obtenir ce chemin absolu et l'utiliser devant le templaceur. J'ai donc créé une propriété globale qui enregistre la trajectoire racine et a changé tous les templisurl's sur templateurl: global.root + pathtofile et cela a fonctionné comme un charme


@ selanac82 Toute chance que vous puissiez fournir à votre solution une réponse afin que d'autres puissent le voir?


Avez-vous essayé de supprimer la barre oblique du début du templacement?


4 Réponses :


0
votes

Dans votre contrôleur, essayez ...

$location.path('/profile');


0 commentaires

4
votes

J'ai eu un problème similaire à cela ce soir. Le problème de base ici est que PhoneGap n'a pas de serveur Web intégré. Si vous développez localement, vous utilisez probablement un serveur Web, vous pouvez donc faire quelque chose comme: http: // localhost / # / Profil et le routage fonctionnera.

Cependant, PhoneGap charge votre code avec un fichier fichier: // url, pas http: // . Si vous faites $ emplacement.url ("profil") Vous remplacez l'URL entière avec juste fichier: // profil , qui n'existe pas. Même chose si vous utilisez un lien comme ceci: mon profil

La solution consiste à faire valoir vos liens pour pointer vers le bon endroit. Si vous utilisez Emplacement.url () Vous pouvez le préfixer avec votre chemin de fichier: $ emplacement.ul (window.location + "# / profil") < / p>

Si vous ne faites que créer un lien, vous devriez être capable de vous éloigner de décoller la barre oblique pour en faire une URL relative: mon profil devient mon profil


0 commentaires

0
votes

Après beaucoup de bricolage, voici ce qui a fonctionné pour moi!

Si vous pouvez utiliser $ emplacement.Path () dans le contrôleur, cela devrait fonctionner comme prévu, mais si vous devez utiliser des liens de style HREF, vous pouvez créer les liens de la page "Base" angulaire (par exemple principale. HTML):

lien vers le profil


0 commentaires

4
votes

avait exactement le même problème ... J'ai pu résoudre ce problème facilement en ajoutant le code suivant à la tête de mon fichier index.html. XXX

J'espère que cela aide.


2 commentaires

Cela a également travaillé pour moi, cela va-t-il (comme dans le fait que j'ai besoin d'une solution similaire pour iOS) travailler sur iOS? Ne pas avoir un Mac, si difficile de tester cela pour le moment.


@Kungwaz je n'ai pas essayé ceci sur iOS. Je crois que la base n'est pas / android_asset / dans iOS, je vérifierais donc les journaux pour voir où la page est chargée, puis basculez simplement la balise de base sur le www < / Code> Dossier.