2016-04-14 18 views
1

パフォーマンス上の理由から、一部のメタデータのグラフデータをレンダリングチャートから選択する方法が必要なチャートアプリケーションに取り組んでいます。Ember Data 2.0+のためのSparse FieldsetsまたはReload from Ember Data 2.0

Ember-data(現在v2.5.0)がJSONAPIのSparse Fieldsetsをサポートしているようには見えません。それは?

あり関係を使用してのような他のオプションは、おそらくですが、今、私たちに最も直感的なデザインが仕様を破ると、チャートがコレクションに照会されたときに別のエンドポイントを使用することです:

GET ../charts/

{"data": [{ 
    "type": "charts", 
    "id": "1", 
    "attributes": { 
    "type": "A", 
    "precision": "10", 
    "average": "22.2", 
    "minimum": "20.4", 
    "maximum": "25.3", 
    }, 
    { 
    "type": "charts", 
    "id": "2", 
    "attributes": { 
    "type": "A", 
    "precision": "100", 
    "average": "20.0", 
    "minimum": "10.0", 
    "maximum": "30.0", 
    }, 
    ... 
]} 

、適切にIDによって照会:

GET ../charts/1

{"data": { 
    "type": "charts", 
    "id": "1", 
    "attributes": { 
    "type": "A", 
    "precision": "10", 
    "average": "22.2", 
    "minimum": "20.4", 
    "maximum": "25.3", 
    "history": [ 
     ["100","21.0"], 
     ["200","20.4"], 
     ["300","25.3"], 
     ... 
    ] 
    } 
} 

しかし、EmberDataにバックエンドサービスからのデータをコンポーネントから強制的にリロードする方法はありませんでした。 backgroundReload機能を使用したいと思っています。これは、視覚的に最良の結果が得られると信じていますが、ルートに関するモデルフックを使用してすべてのドキュメントが完成しています。

私は正しい道にいるのですか、誰かがこれを解決しましたか?

将来のGoogle社員には注意が必要です。実際のJSONapi Sparse Fieldsetsはですが、JSONapi仕様を破棄し、各エンドポイントごとに異なる属性を返すだけで済みます。

答えて

0

あなたはコンポーネントにstoreサービスを注入し、強制的にフックにそのモデルを調べることができます:

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    store: Ember.inject.service(), 

    didReceiveAttrs() { 
    this._super(...arguments); 
    this.get('store').findRecord('chart', this.get('chart').id); 
    }, 
}); 

EDIT:あなたが実行可能という点で、これはまだ燃えさしデータレベルからキャッシュの問題があることに注意してください部分的な属性が存在する場合と存在しない場合のシナリオに分類します。

EDIT:[エンバーガイド](https://guides.emberjs.com/v2.5.0/components/the-など)私は `didreceiveattrs(のために行くことをお勧めしますdidReceiveAttrs

+1

にフックを交換'フックcomponent-lifecycle /#toc_formatting-component-attributes-with-code-didreceiveattrs-code)は、 'this.get(" chart ")'は変更可能なグラフ属性を参照しているので、教えています。 – Pavol

関連する問題