2016-04-29 8 views
1

を使用してバックボーンモデルを初期化し、私はバックボーンモデルには、その子モデル

var Parent = Backbone.Model.extend({ 
    defaults: { 
     id: '', 
     name: '' 
    } 
}); 

var Child = Parent.extend({ 
    defaults: { 
     color: '', 
     shape: '', 
     isValid: false 
}); 

を以下している今、私は「親」モデルオブジェクトを作成する必要があり、「子供」モデル

var child = new Child({ 
    id: '101', 
    name: 'Abc', 
    color: 'White', 
    shape: 'Square', 
    isValid: true 
}); 

の以下の目的を持っています

var json = convertToJSON(child); 
var parent = new Parent(json); 

しかし、ここでは「子供」の属性:私は次のようでしたそのため、この「子」のモデルオブジェクトを使用してモデルは、 "親"モデルの親オブジェクトにも埋め込まれます。この新しいオブジェクトの「親」モデルに該当する属性のみを記入する方法はありますか?私は適用されない属性を削除するために "delete"を使いたくない。

答えて

1
  1. あなたが特定の属性を選択するchild.pickとして、あなたの子オブジェクト上にプロキシ_.pick
  2. を使用することができますあなたは何が必要かを決定するためにParent.defaultsの鍵を抽出することができます

これはに変換:

var parent = new Parent(
    child.pick(_.keys(Parent.prototype.defaults)) 
); 

デモhttps://jsfiddle.net/nikoshr/u5rfpa6v/

+0

ありがとうございました。 – sagargurtu

1

あなたはそれはあなたが親モデルに渡すことができるオブジェクトを返しますのみ必要な属性

var json = child.pick('color', 'shape'); 
var parent = new Parent(json); 

を取得するには子モデルにpickメソッドを使用することができます。 あなたはそれについてもっと読むことができますhere

es2015 destructive assignmentを使用することもできますが、Babel transpilerが必要です。

​​
関連する問題