Klicken Sie auf das eine Modell aus der Sammlung, um alle Modelle in der Konsole dieses Benutzers zu erhalten, anstatt das angeklickte. Kann mir jemand helfen?Warum erhalte ich alle Modelle des Benutzers auf Klick statt auf dem angeklickten Modell?
App.js
in App.js in Modellen zu einer anderen Ansicht zu senden
var App = Backbone.View.extend({
initialize: function()
{
this.collection = new Documents();
console.log("this.collection init", this.collection);
this.listenTo(this.collection, 'add', this.render);
this.listenTo(this.collection, 'sync', this.renderSidebarModels);
},
renderSidebarModels: function()
{
console.log("renderSidebarModels SYNC", this.collection);
for(var i=0; i<this.collection.length; i++)
{
console.log(this.collection.models);
this.sidebar = new SidebarView({model: this.collection.models[i]});
}
},
$(document).ready(function() {
console.log("ready!");
var app = new App();
});
SidebarView.js einen einzigartigen Blick für jedes Modell alle
in SidebarView.js im machen bekommen das Modell aus der Sammlung. Wenn ich auf die Schaltfläche mit der ID #titles klicke, werden alle Modelle dieses Benutzers und nicht nur das angeklickte Modell auf diesem Modell angezeigt.
var SidebarView = Backbone.View.extend({
el : this.$("#sidebar"),
template: _.template(this.$('#sidebar-template').html()),
events:
{
"click #titles": "open",
},
initialize: function()
{
console.log("sidebarView.initialize", this.model);
this.render();
},
render: function()
{
this.$el.append(this.template({ users: this.model }));
//console.log(this.model);
//return this;
},
open: function(e)
{
console.log("open.sidebarView", this.model);
},
})
Was 'this' ist, wenn Sie' el. Diese $ ("# Sidebar") '? Du bist besser dran, wenn du sowas sowieso nicht machst, lass jede Sicht ihr eigenes 'el' kreieren/besitzen/zerstören, dann lass den Aufrufer das' el' in einen Container legen, den es besitzt; Außerdem sollten Sie ID-Selektoren aufgrund ihrer Einzigartigkeit besser vermeiden. Sie haben weniger Probleme mit Ereignissen, wenn Sie diese beiden Dinge tun. –