2016-04-11 14 views
1

Sunucudan (veritabanından) alınacak verilerin çoğunun kullanıcı tarafından seçilen bir tarihle (YYYY-AA-GG) ilişkili olduğu bir durum var. .İlgili herhangi bir rota tarafından kullanılmak üzere bir genel sorgu parametresi tanımlayın

o ilgili herhangi rota tarafından kullanılabilecek bir küresel "tarihi" sorgu parametresi tanımlamak mümkün mü? "Tarih" için bir değer verilmediyse, sunucu varsayılan olarak "tarih" in bugün olduğu verileri döndürecektir.

+0

Bir hizmeti kullanmak ve bir başlatıcısı aracılığıyla tüm yolları içine enjekte edebilir. –

cevap

2

@Kitler tarafından yorumda belirtildiği gibi, paylaşılan durumları işlemek için service kullanmalısınız. Servis, tarihe ihtiyacı olan rota ve kontrolörler tarafından tüketilebilir. Denetleyicide, sorgu paramını URL'de yansıtmak için hizmette ele alınan tarih değerine bağlarsınız.

Eğer bunu birkaç yerde kullanmanız gerekiyorsa, kendinizi tekrar etmekten kaçınmak için bir Mixin yazmalısınız. Tersane tavsiye edebilirim bir makale Ember Best Practices: Extend vs Mixin yazmıştır.

Bazı örnek kod, test edilmiş ancak göstermek için yeterli olacaktır değildir:

// app/services/settings.js 
export default Ember.Service.extend({ 
    date: null 
}); 

// app/route/index.js 
export default Ember.Route.extend({ 
    settings: Ember.inject.service(); 
    model() { 
    return this.store.query('post', { 
     filter: { date: this.get('settings.date') } 
    }); 
    } 
}); 

// app/controller/index.js 
export default Ember.Controller.extend({ 
    date: Ember.computed.alias('settings.date'), 
    queryParams: ['date'], 
    settings: Ember.inject.service() 
}); 
İlgili konular