2012-09-09 3 views
0

J'ai App Backbone Cliquez ici pour voir les codes:épine dorsale avec un routeur coffeescript avec id ne fonctionne pas

C'est Main.coffee:

require ["App/app","backbone"] ,(App,Backbone)-> 
app = new App() 
Backbone.history.start() 

Ceci est app.coffee:

class AppRouter extends Backbone.Router 
    routes : 
     "" : 'Base' 
     "Browse/:id" : "Details" 

    initialize : ->   
     @render() 

    Browse : (id) -> 
     console.log "Hello" 
     stud = new Student({UserKey:id}) 
     stud.fetch({ 
      success :-> 
       $('#content').html new View({model:stud}).el 
     }) 
     null 

Cette est mon View.coffee

define ['jquery' 
    ,'underscore' 
    ,'backbone' 
    ,'text!/Templates/Student/View.htm'] , ($ , _ , Backbone , ViewTemplate) -> 

class StdView extends Backbone.View 

    #_.templateSettings = { interpolate: /\{\{(.+?)\}\}/g }; 

    #template : _.template(View) 

    initialize : (options) ->   
     @render() 

    render :-> 
     console.log @model.toJSON() 
     #@setElement @template @model.toJSON() 
     @ 

, ce qui est mon point de vue modèle (pour montrer les détails de l'étudiant)

<input type="text" name="firstname" value="{{FirstName}}" placeholder="First Name" /> 
    <input type="text" name="lastname" value="{{LastName}}" placeholder="Last Name" /> 

Les articles sont rendus dans une table avec un lien où je clique sur modifier buttton pour obtenir les détails. Voici la partie du modèle où les ID sont rendus.

<td> 
    <a class="btn btn-small btn-inverse" href="#browse/{{UserKey}}"><i class="icon-edit icon-white"></i></a> 
</td> 

Maintenant, j'ai démarré le Backbone.history.start(). Mais pas du tout son aller à la méthode de navigation qu'il devrait aller si je clique sur le lien par exemple comme:/browse/1. Cela n'arrive pas. Le lien qui est rendu sur le navigateur lorsque je clique est comme ce

http: // localhost: 40921/# browse/5

Alors, où est-il après tout va mal ?????? ?

Répondre

1

itinéraires sont sensibles à la casse, vous devriez avoir ceci:

routes : 
    "" : 'Base' 
    "browse/:id" : "Details" 

si vous voulez #browse/5 à faire quoi que ce soit. Ou gardez vos routes comme elles sont maintenant et changez votre lien pour utiliser #Browse/5.

Démo: http://jsfiddle.net/ambiguous/NLzyS/

Si vous voulez un cas itinéraire insensible, vous pouvez ajouter un itinéraire regex manuellement à l'aide route:

initialize: -> 
    @route(/browse\/(\d+)/i, 'Details') 

Démo: http://jsfiddle.net/ambiguous/2S6wr/

+0

oui! merci vous avez raison. le routeur est en effet sensible à la casse :). Je n'y ai pas prêté attention auparavant. Maintenant je l'ai compris pourquoi ça fonctionnait maintenant. – Joy

Questions connexes