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はundefinedを返します。モデルを親ビューに戻す方法を誰かに教えてもらえますか?

ありがとう

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 に答える