2

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

$(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 返回未定义。有人可以让我知道如何将模型传递回父视图吗?

谢谢

4

2 回答 2

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

这对我有用。

于 2013-04-24T10:56:30.113 回答
1

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

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

因此,当您进入代码所在的函数时,“this”并不指向子视图,而是指向某个 DOM 对象或其他东西。那么 this.model 并不指向你所期望的。

例如:

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

addFunction : function () {
  $(this.el).trigger('added', this.model);
}
于 2012-06-15T20:49:37.130 回答