我正在尝试学习Backbone并且我有一些工作正常的视图。以下是我有问题的观点中的代码:
var FavoritesView = Backbone.View.extend({
el: 'favs',
render: function() {
var timesheets = new TimeSheet();
var $that = $(this);
timesheets.fetch({
data: { favorite: true},
success: function(model, response, options) {
var template = _.template($('#favs-view').html(), { timesheets: model.models})
$('.favs').html(template).addClass('well');
}
});
}
});
您可以看到我获取一个集合,将响应放在模板中,然后显示它。我无法从“成功”回调中获得$ el。 $ that.el和$ that。$ el(我不知道区别)都是未定义的。我不得不最终使用Jquery获取元素并附加模板,如您所见。这是有效的,但这是一个黑客,我不喜欢它。任何帮助都会很棒。
答案 0 :(得分:1)
我认为你在这一行中做错了
var $that = $(this);
el是此对象的属性,不属于 $(this)。 所以你应该这样做
var that = this;
然后this.el将不会被定义。请检查此working example
this.el与此之间的区别。$ el
基本上$ el是$(this.el)的缓存jquery对象。阅读更多Backbone View Documentation
答案 1 :(得分:0)
我认为favs
是一个类或一个id。如果它是一个类,请尝试添加.
;如果是#
,请在favs
之前添加el: '.favs',
,例如{{1}}。它是jquery选择器语法。