Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
backbone.js更改事件仅触发第一次_Backbone.js_Model_Event Binding - Fatal编程技术网

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

backbone.js更改事件仅触发第一次,backbone.js,model,event-binding,Backbone.js,Model,Event Binding,我有一个包含日历的backbone.js模型。用户可以在日历中来回移动,我可以获取所选日历日的事件 在我的模型中,我有 initialize: function(){ this.on('change:date',this.get_cal()); }, get_cal: function(){ alert('get calendar'); this.fetch(... } 初始化:函数(){ this.on('change:date',this.get_cal()); },

我有一个包含日历的backbone.js模型。用户可以在日历中来回移动,我可以获取所选日历日的事件

在我的模型中,我有

initialize: function(){ this.on('change:date',this.get_cal()); }, get_cal: function(){ alert('get calendar'); this.fetch(... } 初始化:函数(){ this.on('change:date',this.get_cal()); }, get_cal:function(){ 警报(“获取日历”); 这个。取(。。。 } 在我看来,我有

cal_date: function(move){ Myapp.cal.attributes.date.setDate(Myapp.cal.attributes.date.getDate()+move); } 校准日期:功能(移动){ Myapp.cal.attributes.date.setDate(Myapp.cal.attributes.date.getDate()+move); } 当日期更改时,我希望主干触发更改事件,并获取新日期的日历事件。不幸的是,这没有发生

我也试着把打印出来的日期放进模型中

Myapp.cal.set({print_date: formatted_date}); Myapp.cal.set({打印日期:格式化日期}); 认为主干网可能缺少更新,因为我没有调用“set”,或者因为它看到一个日期对象,认为它已经有了一个日期对象,因此没有更改

我还尝试在视图中使用
Myapp.cal.trigger('change')
触发更改,但这也不起作用。通过调用
Myapp.cal.cal\u events.refresh()
删除日历事件,其中cal\u events是保存日期事件的集合


你看到这里出了什么问题吗?

我认为问题在于这一行的get\u call后面的括号:

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

您应该删除它们,因为它们在initialize中正确调用了get\u call,而不是将它们设置为事件处理程序。

我认为问题在于这一行中get\u call后面的括号:

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

您应该删除它们,因为它们在initialize中调用了get\u call,而不是将它们设置为事件处理程序。

没错,Ivan,您是否有机会解释一下,或者给我指出一些解释调用
this.get\u cal()之间区别的内容
函数,和
这个。get\u cal
没有大括号?我不明白为什么一个有效,另一个无效。@pedalpete带括号(this.get\u call()),get\u调用将立即执行。没有括号(this.get\u call),您正在传递函数对象,该函数对象将在适当的事件发生时调用occurs@pedalpeteJavaScript中的函数是一种类似字符串或整数的数据类型。如果没有括号,则可以像传递参数一样传递函数本身(这是在指定回调时通常要做的事情),带括号-它的返回值。没错,伊万,你能解释一下,或者给我指一些东西,解释调用
this.get\u-cal()
函数和
this.get\u-cal
不带括号之间的区别吗?我不明白为什么一个可以工作,另一个不行。@pedalpete带括号(this.get\u-call()),get_调用将立即执行。如果没有括号(this.get_调用),您将传递函数对象,该函数对象将在适当的事件发生后调用occurs@pedalpeteJavaScript中的函数是一种类似字符串或整数的数据类型。如果没有括号,则像传递参数一样传递函数本身(这是您在指定回调时通常要执行的操作),带括号-它的返回值。