如何在backbonejs和requirejs中从子视图触发事件到父视图

时间:2012-06-15 18:08:40

标签: backbone.js requirejs

我有一个动态创建子视图的父视图,我已经触发了从子视图到父视图的事件,并且我将子视图的模型传递给父视图,并设置了一些属性。现在在父视图中我必须采用模型并添加到集合中。这是我的代码 子视图触发器代码

$(this.el).trigger('added', this.model);

父视图事件

events: {
            "added": "addNewAttribute"
        },
    addNewAttribute: function (model) {
        console.log(model);
        this.collection.add(model);
        console.log(this.collection);
    }

console.log返回undefined。有人能让我知道如何将模型传递回父视图吗?

感谢

2 个答案:

答案 0 :(得分:2)

刚遇到同样的问题!

问题是父函数将事件作为第一个参数 触发器函数将变量作为数组传递。 所以代码应该像:

$(this.el).trigger('added', [this.model]);

父视图事件:

events: {
    "added": "addNewAttribute"
},
addNewAttribute: function (event,model) {
    console.log(model);
    this.collection.add(model);
    console.log(this.collection);
}

这对我有用。

答案 1 :(得分:1)

我可能不在基础但我猜测子视图没有对包含此代码的函数进行绑定:

$(this.el).trigger('added', this.model);

因此,当您进入代码所在的函数时,“this”不指向子视图,它指向某个DOM对象或其他东西。然后this.model没有指出你的期望。

例如:

initialize : function () {
  _.bindAll(this, "addFunction");
}

addFunction : function () {
  $(this.el).trigger('added', this.model);
}