2012-07-23 1 views
2

J'essaie d'utiliser Backbone.js pour gérer l'historique du navigateur. Je ne configure pas Views/Models parce que je ne veux pas que cela gčre cela, et probablement pour cette raison je ne le fais pas fonctionner correctement.Utilisation de Backbone.js pour gérer l'historique du navigateur

À ce stade, ma page change d'URL. Comme:

domain.com/services 
domain.com/products 
domain.com/contact 
domain.com/gallery 
domain.com/gallery/photo1 

Le problème est: si j'essaie de recharger la page sur domain.com/gallery/photo1. J'obtiens l'erreur Uncaught SyntaxError: Jeton inattendu <

Toutes les autres pages avec un seul permalien de niveau fonctionnent correctement sur recharger. Est-ce que j'ai raté quelque chose sur Backbone? Je n'utilise que Backbone.Router et Backbone.history.

Y at-il un tutoriel simple sur la façon de configurer un site avec backbone.js? Juste l'histoire?

Voici mon script:

var Router; 
var myRouter; 

$(document).ready(function(){ 
    Router = Backbone.Router.extend({ 
     initialize : function(options) { 
      // 
     }, 
     routes: { 
      '' : 'home', 
      '*actions' : 'pages' 
     }, 
     home : function() { 
      this.render('/'); 
     }, 
     pages : function(actions) { 
      this.render(actions); 
     }, 
     render : function(path) { 
      var fullLine = ''; 
      path = (path === '/' || path === '')? '/' : path; 
      console.log('path: ' + path); 
     } 
    }); 

    myRouter = new Router(); 

    Backbone.emulateHTTP = true; 
    Backbone.emulateJSON = true; 
    Backbone.history.start({pushState: true, root: "/backbone_teste/"}); 

    // MENU CLICK 
    $('.menu').children('li').each(function(){ 
     $(this).click(function(){ 
      myRouter.navigate($(this).attr('data-id'), true, true); 
     }); 
    }); 
}); 

Merci pour votre aide!

+2

"Uncaught SyntaxError: jeton inattendu <" suggère que quelqu'un essaie d'interpréter le HTML comme JSON. Pouvez-vous nous montrer du code? –

+0

Post édité. Je viens d'ajouter ces options à emulateHTTP et emulateJSON pour voir si cela résout le problème. Je ne charge rien encore. Si je change de pushState en false et que j'essaie d'accéder à domain.com/#gallery/photo1 cela fonctionne, mais je ne veux pas le hash! Merci –

+0

Je cours cet exemple sur localhost/backbone_teste et j'ai un fichier .htaccess à mod_rewrite. Peut-être que cela a quelque chose à voir avec mon problème. –

Répondre

2

Problème résolu:

Je viens d'ajouter à mon fichier index.php le code suivant à la section de tête:

<base href="http://localhost/backbone_teste/" /> 

Et cela fonctionne.

Quoi qu'il en soit, je voudrais savoir pourquoi cela se produit et pourquoi la documentation de Backbone.js ne le mentionne pas.

J'ai trouvé la solution à ce lien: HTML5 History/pushState URLs, .htaccess and You

Merci

+0

Merci! Cela a fait l'affaire pour moi aussi. –

Questions connexes