Javascript 当我用主干触发事件时,不会发生任何事情
我试着从主干开始。我有以下几点:Javascript 当我用主干触发事件时,不会发生任何事情,javascript,testing,backbone.js,tdd,jasmine,Javascript,Testing,Backbone.js,Tdd,Jasmine,我试着从主干开始。我有以下几点: var Question = Backbone.Model.extend({ defaults: function() { return { title: "Enter your question", type: "smallTextField", editMode: true }; }, initialize: function() {
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);
}
});
AppView:
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>
在我的茉莉花规范中,我触发$addQuestion.click
然而,当我运行测试时,什么也没有发生。例如,似乎没有函数绑定到addQuestion的单击事件
我猜有些事情做错了,我根本不知道是什么
有什么想法吗?为什么你的身份证上有a?是打字错误吗? 尝试删除它id=addQuestion 另外,您确定在触发单击之前已初始化视图吗? 通常,当事件未被触发时,这是因为它们被设置在视图范围之外的元素上,例如在视图中未包含的链接上。但既然你用的是body,除非你在帖子中修改了body,否则我看不出它是怎么来的。 所以我猜jQuery选择器在这里并不是很有用。 尝试: 而不是:
el: $("body")
通常,当我遇到这个问题时,它与这样一个事实有关:在jQuery和DOM完全加载之前,正在对传递到主干视图中的对象文本的属性进行评估
下面是一个描述问题和几种解决方案的示例。只是在发布之前我对代码进行了一点修改后引入的一个输入错误。对我来说很有用:我希望你的jasmine中有一个正确的HTML,我的意思是你的AADDQ正确地放置在body标签中,因此,事件选择器可以匹配它。我很乐意编辑您的问题,以删除所有添加的代码不超过噪音,我们需要在这里实现模型和集合吗?
el: $("body")