骨干自定义事件回调参数

时间:2014-05-01 16:47:29

标签: javascript backbone.js

我正在尝试使用trigger()函数在自定义事件中将名为newIndex的参数从一个视图传递到另一个视图。以下是第一个视图的摘录:

var ProductListView = Backbone.View.extend({

    el: '#products',

    events:{
            sortupdate: function(event, ui){
                    ui.item.trigger('moved', ui.item.index());
            }
    }
});

触发'move'事件的元素是另一个视图。以下是该观点的摘录:

var ProductItemView = Backbone.View.extend({

    events: {
            moved: 'viewMoved'
    },

    initialize: function(){
            _.bindAll(this, 'render', 'viewMoved');
    },

    viewMoved: function(newIndex){
            anotherFunc(this.model, newIndex);
    },

});

我遇到的问题是,在anotherFunc()调用中,newIndex参数似乎是事件本身,而不是我触发事件时传入的值。如果我将viewMoved回调调整为以下内容,则说明其正常工作:

viewMoved: function(event, newIndex){
    anotherFunc(this.model, newIndex);
},

这是预期的功能吗?事件本身是否始终是传递给自定义事件回调的第一个参数,还是其他事情发生在这里?如果它的目的是在某处记录?我在Backbone文档中找不到任何对此的引用。

1 个答案:

答案 0 :(得分:0)

Backbone大量使用jQuery,而你的ui.item实际上是一个jQuery对象。请参阅trigger function的文档。

总之,您使用的是jQuery' trigger,因为ui.item不是Backbone View。额外参数始终在event对象之后传递。