2012-02-12 6 views
7

Impossibile capire cosa c'è che non va. Quando faccio clic su un titolo di modello, recupera tutti i modelli in una raccolta, piuttosto che recuperare un modello. Se sposto questo evento da logView a logsView funziona correttamente ma non ha accesso al modello, ma posso trovare questo modello usando l'indice o l'altro ID di un altro modello, ma non penso che questo sia un buon modo.L'evento click backbone genera eventi per tutte le raccolte anziché il modello

var Log = Backbone.Model.extend({}); 


window.LogsList = Backbone.Collection.extend({ 
    model:Log, 

    url:function (tag) { 
     this.url = '/logs/' + tag; 
     return this; 
    } 
}); 

window.colList = new LogsList(); 

window.logView = Backbone.View.extend({ 
    el:$('.accordion'), 

    template:_.template($('#log').html()), 

    initialize:function() { 
     this.model.bind('add', this.render, this); 
    }, 

    events:{ 
     "click .accordion-toggle" :"getLogBody" 
    }, 

    render:function() { 
     return this.template(this.model.toJSON()); 
    }, 

    getLogBody:function() { 
     this.model.fetch(); 
    } 
}); 

window.LogsView = Backbone.View.extend({ 
    el:$("#content"), 

    initialize:function (options) { 
     colList.bind('reset', this.addAll, this); 
     colList.url(options.data).fetch(); 
    }, 

    addOne:function (model) { 
     var view = new logView({model:model}); 
     $("#accordion").append(view.render()); 
    }, 

    addAll:function() { 
     colList.each(this.addOne); 
    } 
}); 

window.listView = new LogsView({data:"Visa_Cl"}); 

risposta

10

Il problema è causato dal vostro el nel LogView: Guarda eventi el:$('.accordion')

di Backbone sono portata alla vista del el. In questo caso, hai specificato la vista el come TUTTI gli elementi HTML con una classe di "fisarmonica". Pertanto, quando fai clic su qualsiasi dei tuoi elementi HTML con questa classe, il codice viene eseguito per tutti, motivo per cui stai visualizzando questo comportamento.

In questo articolo vi mostrerà alcune opzioni per fare quello che vuoi, in modo corretto:

Raccomando anche la lettura di questo, per capire meglio l'uso di el in Backbone , e alcuni dei trucchi e trappole di essa:

+0

Grazie, ho il sospetto che mi sia incasinato. – nateless

+0

Grazie amico! risorsa eccellente! –

+0

Grazie ... proprio quello di cui avevo bisogno. –

Problemi correlati