主干自定义事件回调参数

Backbone custom event callback arguments

本文关键字:回调 参数 事件 自定义      更新时间:2023-09-26

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

var ProductListView = Backbone.View.extend({
    el: '#products',
    events:{
            sortupdate: function(event, ui){
                    ui.item.trigger('moved', ui.item.index());
            }
    }
});

触发'moved'事件的元素是另一个视图。以下是该观点的节选:

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在底层大量使用jQuery,您的ui.item实际上是一个jQuery对象。查看触发器函数的文档。

总之,你正在使用jQuery的trigger,因为ui.item不是骨干视图。额外的参数总是在event对象之后传递。