主干自定义事件:获取调用者对象

backbone custom events: getting caller object

本文关键字:获取 调用者 对象 事件 自定义      更新时间:2023-09-26

只是一点琐事;我在一个循环中创建视图和模型,然后尝试将自定义事件绑定到它们。到目前为止都很好,但是当我想要找出与对象触发事件。我知道还有其他更长的方式来单独分配事件到每个系列,但我想我正在寻找一个更有效的方式:

initialize: function(args)
    {
        this.views = [];
        this.models = [];
        for(var i =0;i<args.items.length;i++)
        {
            this.models[i]      = new BasicContentModel({url:args.items[i].urlRoot+args.items[i].url});
            this.views[i]       = new BasicContentView({model:this.models[i],id:i,className:"tab-"+i});
            this.views[i].bind("updated",this.update,this) //<-- heres the bind
        }
        // blah blah
    },
    update: function(args)
    {
        console.log("updating:",args) //<-- trying to get which one called the update
    }

这有意义吗?我想记录下哪个视图被更新了

对不起,我不认为我可以删除我的问题,由于缺乏点,但我刚刚在其他地方找到了答案,并认为也许将来有人会发现这有用:

当你触发事件时,对象应该作为第二个参数包含到触发器方法中,像这样

从BasicContentView

this.trigger("updated",this)

集合是做这类事情的完美场所,它应该是这样的:

var myCollectionView = Backbone.View.extend({
  initialize: function() {
    this.models = [];
    this.collection.add(this.models);
    this.collection.bind("add", this.addOne, this);
  }
  addOne: function(model_instance) {
    var basicContentView = new BasicContentView({model:model_instance});
    this.$('ul').append(basicContentView); // if your basicContentView is an li for example.
  }
});