2016-05-15 4 views
0

まだ簡単なことのような音は私にあらゆる種類の悲しみを引き起こしています。私はいくつかのネストされたオブジェクトを持っているシンプルなserverモデルを持っているEmber.js(2.5.0)ネストされたオブジェクトの値を設定する方法

export default DS.Model.extend({ 
    type: DS.attr('string'), 
    attributes: DS.attr(), 
    tasks: DS.attr() 
}); 

は、私が使用してルートに新しいレコードを作成することができます

export default Ember.Route.extend({ 

    model() { 
     return this.store.createRecord('server'); 
    }, 

    actions: { 
     create(server) { 
      server.save().then(() => this.transitionTo('servers')); 
     } 
    } 
}); 

と私は関連.hbsで

たとえば、フォームから value=model.attributes.nameを使用して属性およびタスクのいくつかのプロパティを設定します。

これはすべて問題なく動作します。しかし、デフォルト値のようなcreateの間にルートからいくつかのプロパティを追加したいと思います。

server.set('attributes.size', 'large');を使用すると、Emberは新しいレコードであるため、サイズについてまだ分かりません。

は、しかし、名前は...

私はsetPropertiesメソッドでそれを指定しなかったので、今はnull

私はsetPropertiesメソッドを使用することができますが、これは

server.setProperties({ 
    attributes: { 
     size: "large" 
    }, 
     tasks: { 
      create: true 
    } 
}); 

sizeが正しく設定されている他のすべての値を一掃するようである

これについて適切な方法はありますか?確かに、私はsetPropertiesのすべてのプロパティをマップする必要はありませんか?それは無駄になり、非常にエラーを起こしやすいようです。

属性は、独自のモデルであり、サーバーとの関係が必要ですか?これは常に1対1と1対1の関係ですが、

答えて

0

この場合、解決策としてember-data-model-fragments addonを使用することをおすすめします。

https://github.com/lytics/ember-data-model-fragments

その他のオプション属性の別のモデルを使用して1対1の関係を設定します。どちらもbelongsToですが、データベースやAPIにも依存しますので、バックエンドシステムをこの新しい構造に合わせる必要があります。

関連する問題