Je suis un Backbone.js newbie. J'étais en train de jouer avec elle. Je voudrais savoir si le modèle est lié à la Vue. Dans le todos exemple, je vois dans le addOne méthode, un nouveau point de Vue est créé et associé avec le modèle nouvellement créé et ajouté.
window.AppView = Backbone.View.extend({
// view code
addOne: function(todo) {
var view = new TodoView({model: todo});
this.$("#todo-list").append(view.render().el);
}
}
Quand j'ai essayé de faire quelque chose de similaire, j'ai une erreur disant "méthode de liaison ne peut pas être trouvé sur undefined".
window.TodoView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render', 'close');
this.model.bind('change', this.render); // I got the error at this place.
this.model.view = this;
}
});
Afin de résoudre ce problème, je suis arrivé à passer le modèle nouvellement créé comme un param pour le constructeur de la vue et je dois this.model = task
afin de l'associer.
window.TodoView = Backbone.View.extend({
initialize: function(task) {
_.bindAll(this, 'render', 'close');
this.model = task
this.model.bind('change', this.render);// now there is no error
this.model.view = this;
}
});
window.AppView = Backbone.View.extend({
insertTask:function(){
var newTask, newTaskView;
newTask = new Task(JSON.parse(xhr));
Tasks.create(newTask);
newTaskView = new TaskView({ model: newTask });
$("#todo_list").append(newTaskView.render().el);
this.input.val('');
}
});
Mais le todos exemple, ne pas avoir quelque chose comme ça. Comment est le nouveau modèle associé avec la nouvelle vue implicitement dans le todos exemple?
Merci