backbone.js更改事件只触发第一次

时间:2012-11-02 00:26:28

标签: backbone.js model event-binding

我有一个包含日历的bac​​kbone.js模型。用户可以在日历中来回走动,我可以获得所选日历日的活动。

在我的模型中,我有

initialize: function(){
    this.on('change:date',this.get_cal());
},
get_cal: function(){
    alert('get calendar');
    this.fetch(...
}

在我看来我有

 cal_date: function(move){
    Myapp.cal.attributes.date.setDate(Myapp.cal.attributes.date.getDate()+move);

}

当日期发生变化时,我预计骨干会触发更改事件,并获取新日期的日历事件。不幸的是,这种情况并没有发生。

我也尝试将打印日期作为

添加到模型中
Myapp.cal.set({print_date: formatted_date});

认为可能主干缺少更新,因为我没有调用'set',或者因为它看到了一个日期对象,并认为它已经有一个日期对象,因此没有改变。

我也试图在视图中使用Myapp.cal.trigger('change')触发更改,但这也无效。也没有通过调用Myapp.cal.cal_events.refresh()删除日历事件,其中cal_events是包含days事件的集合。

你知道这里有什么问题吗?

1 个答案:

答案 0 :(得分:3)

我认为问题出在此行 get_call 之后的括号中:

this.on('change:date',this.get_cal());

您应该删除它们,因为它们在初始化时调用 get_call 而不是使它们成为事件处理程序。