Я пытаюсь начать работу с Backbone. У меня есть следующий JS:
var Question = Backbone.Model.extend({
defaults: function() {
return {
title: "Enter your question",
type: "smallTextField",
editMode: true
};
},
initialize: function() {
if (!this.get("title")) {
this.set({"title": this.defaults.title});
}
},
toggleEditMode: function() {
!this.get("editMode");
},
clear: function() {
this.destroy();
}
});
Коллекция:
var Questions = Backbone.Collection.extend({
initialize: function(models, options) {
this.bind("add", options.view.addQuestionView);
}
});
Вид приложения:
var AppView = Backbone.View.extend({
el: $("body"),
initialize: function () {
this.questions = new Questions( null, { view: this });
},
events: {
"click #addQuestion": "addQuestionModel"
},
addQuestionModel: function() {
var model = new Question();
this.questions.add(model);
},
addQuestionView: function(model) {
$("#questionBox").append("<div>" + model.get('title') + "</div>");
},
});
var appview = new AppView;
и следующий HTML:
<div id="questionBox"></div>
<a href="#" id="addQuestion">Add question</a>
В моей спецификации Jasmine я запускаю $("#addQuestion").click();
Однако - ничего не происходит, когда я запускаю тест. Например. похоже, что ни одна функция не привязана к событию клика #addQuestion.
Я предполагаю, что что-то сделано не так, и я просто не могу понять, что это такое.
Есть идеи?
a#addQuestion
правильно помещен в тегbody
, поэтому селекторevents
может соответствовать ему. - person fguillen   schedule 07.06.2012