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
Events 主干js无法在上的事件中返回值_Events_Backbone.js - Fatal编程技术网

Events 主干js无法在上的事件中返回值

Events 主干js无法在上的事件中返回值,events,backbone.js,Events,Backbone.js,伙计们,我是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;

伙计们,我是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);
});

我希望有人能给我一些想法,非常感谢。

主干。创建事件不是为了返回值,而是作为对象的通知机制。将忽略已注册回调的返回值,并返回触发事件的实际对象(这就是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);
});

关于这个问题,我提出了另一个解决方案,如下所示:

    $(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);
});