伙计们,我是backboneJs的新手,我尝试编写一个基本程序来返回events.on中的值,如下所示,但它不起作用。
$(function(){
// object.on(event, callback, [context])Alias: bind
var object = {};
_.extend(object, Backbone.Events);
object.on('add',function(a,b){
return a + b;
});
var sum = object.trigger('add',1,3);
// not as I expected.
alert(sum);
});
我希望有人能给我一些理想,非常感谢。
答案 0 :(得分:4)
不会创建Backbone.Events来返回值,而是创建对象的通知机制。返回已注册回调的返回值,并返回触发事件的实际对象(这就是sum不包含4的原因)。
如果你真的需要从事件中提取某些东西,你可以像这样重构你的代码:
$(function(){
// object.on(event, callback, [context])Alias: bind
var object = {};
_.extend(object, Backbone.Events);
// register variable outside of callback scope
var sum;
object.on('add',function(a,b){
// store result inside variable coming from outside
sum = a + b;
});
// trigger don't return anything, but sum variable will be filled
object.trigger('add',1,3);
// not as I expected.
alert(sum);
});
答案 1 :(得分:1)
我想出了关于这个问题的另一种解决方案,如下所示:
$(function(){
// object.on(event, callback, [context])Alias: bind
var object = {};
_.extend(object, Backbone.Events);
// add a attribute 'sum' for the object, to hold the value.
object.on('add',function(a,b){
return this.sum = a+b;
});
var r = object.trigger('add',1,3);
alert(r.sum);
});