I持って、次のBACKBONE.JSモデルとコレクション:私は変更にサブビューをバインドしようとしていますバックボーンビューでモデルの変更が検出されないのはなぜですか?
// View
lr.MapView = Backbone.View.extend({
el: $('#wrapper'),
initialize: function() {
this.date = this.options.date;
_.bindAll(this, "render", "addAllEvents", "addOneEvent", "showNextDay", "collectData");
this.collectData();
},
events: {
"click #next": "showNextDay",
},
collectData: function() {
var that = this;
if (this.collection) this.collection.reset();
this.collection = new lr.Events([], { date : this.date });
this.collection.fetch({
success: function(resp) {
that.render();
that.addAllEvents();
}
});
},
showNextDay: function() {
this.date = this.date.add(1).days();
this.collectData();
},
addAllEvents: function() {
this.collection.each(this.addOneEvent);
},
addOneEvent: function(e) {
var ev = new lr.EventView({
model: e,
parentView: this
});
},
...
});
// Sub-view
lr.EventView = Backbone.View.extend({
initialize: function() {
var that = this;
this.model.bind('change', function() {
console.log('foo');
that.remove();
});
}
...
});
:ビューとそのサブビューで使用されている
// Model
lr.Event = Backbone.Model.extend({});
// Collection
lr.Events = Backbone.Collection.extend({
model: lr.Event,
initialize: function(models, options) {
this.date = options.date;
},
url: function() {
return '/events' + '?date=' + this.date.toString('yyyy-MM-dd');
}
});
その関連モデルに変換する。だから、this.collection.reset()
と呼ぶと、console.log('foo')
が呼び出されると思います。そうではありません。私はconsole.log
を以前にコレクションしていましたが、私はそれをリセットした後、 "何かから何もない"ことは間違いありませんので、私は何とかサブビューのモデルへの結合を台無しにしていると思います。
誰でもエラーが表示されますか?
完全に意味があります。ありがとうございました! – AdamVickers