2016-04-14 16 views
1

Performans nedenleriyle, grafik verilerinin bazı meta verilere bölünmesi için grafikleri oluşturmak üzere bir grafiğe gereksinim duyan bir grafik uygulamasında çalışıyoruz.Sparse Fieldsets veya Bileşeninden Yeniden Yükle, için Ember Data 2.0+

Görünüşe göre Ember-data (şu anda v2.5.0) JSONAPI'ın Seyrek Fieldset'lerini desteklemektedir. Yapar?

Orada ilişkileri kullanmak gibi diğer seçenekler, muhtemelen, ama şu anda bizim için en sezgisel tasarım spesifikasyonları kırmak ve bir grafik koleksiyonu girilerek arama yapıldığında farklı uç noktaları kullanmaktır:

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", 
    }, 
    ... 
]} 

ve uygun No sorgulandığında:

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"], 
     ... 
    ] 
    } 
} 

Ancak, EmberData'yı bir Bileşen'den arka uç hizmetinden veriyi yeniden yüklemeye zorlamanın bir yolunu bulamadık. En iyi görsel sonuçları sağlayacağına inandığımızdan backgroundReload işlevini kullanmak isteriz, ancak bu konuyla ilgili tüm belgeler bir Rotanın model kancalarını kullanarak yapılır.

Doğru yolda mıyım yoksa birini mi çözdünüz?

Gelecek Google çalışanları için bir uyarı notu - bu, fields[chart]=history ile gerçek JSONapi Sparse Fieldsets'u kullanmıyor, ancak yalnızca JSONapi özelliklerini bozmaya ve her son nokta için farklı özniteliklere dönmeye dayanıyor.

cevap

0

Sen bileşenine store hizmeti enjekte ve zorla kancaya bu modeli yukarı görünebilir:

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); 
    }, 
}); 

DÜZENLEME: yani size çalıştırabilir, bu hala kor-veri seviyesinden önbelleğe sorunları var unutmayın Kısmi özelliklerin var olabileceği veya olmayabileceği senaryolara.

DÜZENLEME: I) (didreceiveattrs `gitmek için öneriyoruz didReceiveAttrs

+1

için kanca Anahtarlı' kanca olarak [Kor Kılavuzları] (https://guides.emberjs.com/v2.5.0/components/the- component-lifecycle/# toc_formatting-component-attribute-with-code-didreceiveattrs-code), 'this.get ("chart") 'ifadesinin değiştirilebileceğini düşündüğümden beri öğretir. – Pavol

İlgili konular