2016-11-21 16 views
0

子ビューから親ビューに新しいモデルを追加しようとしています。私の親ビューで子ビューから親ビューにモデルを追加する

、私はこのような子ビューのレンダリング:

:私の子ビュー(engineOptionsView)で

renderEngineOptions: function() { 
     var view = new EngineOptionsView({ model: this.model }); 
     this.$('.engineOptions').append(view.render().el); 
    }, 

を、私はinitializeメソッドで「this.engine」と親を定義します

initialize: function (args) { 
     this.engine = args.model; 
    } 

その後、私はクリックしたときに、このイベントを発生させていること、HTMLのボタンがあります。

addTurbo: function() { 
     this.$('.turboOption').show(); 
     this.engine.turbo = new Turbo(); 
    } 

ターボは新しいモデルであります私はエンジンに追加しようとしています。しかし、何も起こりません。コンソールにエラーは表示されませんが、コンソールにエンジンモデルを書き出すと、ターボは追加されませんでした。

子供から親にターボモデルを追加するにはどうすればよいですか?

ありがとうございます!

+0

あなたが解決しようとしている問題を示す[mcve]を含めてください。 –

答えて

1

modelオプションを使用してモデルを渡すと、そのビューは自動的にそれ自身に適用されるため、this.modelから直接利用できます。

initialize: function (args) { 
    this.engine = args.model; // not necessary 
    console.log(this.model === this.engine); // same thing 
} 

あなたがモデルですから、親からturboを取得したい場合

this.engine.turbo = new Turbo(); 

のプロパティとしてturboを追加している:子で

var view = new EngineOptionsView({ model: this.model }); 

this.model.turbo; 

this.model.set('turbo', new Turbo()); 

と親からそれを得るために:あなたは、子ビューからモデルの属性としてturboを追加したい場合は

詳細なし

this.model.get('turbo); 

、それは推測するのは難しいですどこから問題が発生しているのか。

+0

なぜバックボーンタグは角度jよりもいくつかの質問があります。それはバックボーンが良いフレームワークではないという意味ですか? – Mahi

+1

@Mahi Backboneはフレームワークではなく、当時は何も良くなかったとき(〜2011-2012)人気がありました。 AngularJSはまだメンテナンスされている新しい*フレームワーク*です。 –

+0

親ビューをレンダリングするためにコレクションを使用している場合は、単に新しいモデルをコレクションにプッシュすることができます。this.model.collection.add({}) –

関連する問題