我试图了解this.item
来自此主干视图的位置:
Backbone.View.extend({
initialize: function() {
var date = new Date();
this.date = date;
this.month = date.getMonth();
this.day = date.getDay();
this.year = date.getFullYear();
this.calendar = new calendar();
_.bindAll(this);
},
showActivityItem: function(e) {
var target = $(e.currentTarget);
var id = target.attr("data-id");
var item = this.item;
}
});
item
似乎是一个Backbone模型,除了它是如何被分配到item
属性之外我对此很好。
当我在控制台中输出项目时,我得到:
child {cid: "c85", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
_changing: false
_events: Object
_pending: false
_previousAttributes: Object
attributes: Object
changed: Object
cid: "c85"
collection: child
__proto__: Surrogate
每个事件调用showActivityItem:
events: {
'click #activityList .boxEntry': 'showActivityItem'
},
类中没有代码可以执行此操作。 item
在Backbone视图中是否为Backbone模型提供了一些未记录的访问者?它不在Backbone网站上的View属性列表中。
谢谢。
答案 0 :(得分:0)
在您展示的代码之外的某个地方,您的代码(可能是无意中)在视图中添加了.item
属性。
var model = new ItemModel(...);
// ...
var view = new ItemView({model: model});
// ...
view.item = model;
Backbone本身没有任何内容定义名为item
的属性,您可以通过搜索source code进行验证。由于您使用的是标准的Backbone事件委托(除非您没有包含某些代码),因此事件处理程序中的this
将被设置为视图本身。