我有一个用主干开发的网站。我创建了一个应用程序,并在其中创建了一些子视图。
在这个子视图中,我可以有一个 div (带有 id close
),如果我点击它,我必须触发一个事件。但是事件没有触发,我不知道为什么。你能解释一下我对这个事件有什么问题吗?
问题出在Search.Views.Product
带有事件的子视图中。
这是我的应用程序(我已经剪掉了一些东西来很好地阅读应用程序):
//main app
Search.Views.App = Backbone.View.extend({
initialize:function () {
var this_app = this;
this.subView = {
Product : new Search.Views.Product({
base_url:this_app.base_url || '',
collection : new Search.Collections.Products()
})
}
},
render:function (options) {
var defaults = {
products:{
wrap:"ul",
id:"product-results",
class:""
}
}
var settings = $.extend(true, defaults, options);
this.renderProducts(settings);
},
renderProducts:function (settings) {
$(this.id).html(this.wrap(this.subView.Product.getTemplate(settings.products.view), settings.products));
}
});
//collection
Search.Collections.Products = Backbone.Collection.extend({
model: Search.Models.Product,
initialize:function () {
}
});
Search.Models.Product = Backbone.Model.extend({
defaults: search.product.defaults || {},
initialize:function () {
}
});
Search.Views.Product = Backbone.View.extend({
//doesn't fire this event!!!--------------------------------------
events: {
'click #close': 'closeResults',
'click': 'closeResults'
},
closeResults:function (event) {
console.log('Close results');
$('#close').html('test');
},
getTemplate:function (view) {
var data = this.collection.toJSON() || this.model.toJSON();
data = this.normalize(data);
var template = Handlebars.compile($(this.template).html());
return template({view:view, results:data});
},
render:function () {
// non utilizzato per ora
return this;
}
});