2016-04-11 4 views
1

Ich habe eine Situation, in der die meisten vom Server (Datenbank) abgerufenen Daten mit einem vom Benutzer gewählten Datum (JJJJ-MM-TT) verknüpft sind .Definieren eines globalen Abfrageparameters, der von jeder relevanten Route verwendet werden kann

Ist es möglich, einen global „date“ Abfrageparameter, zu definieren, die durch relevante Route verwendet werden können? Wenn kein Wert für "date" angegeben wird, gibt der Server standardmäßig Daten zurück, bei denen "date" heute ist.

+0

Sie einen Dienst verwenden können und es in alle Ihre Routen durch einen Initialisierer injizieren. –

Antwort

2

Wie im Kommentar von @Kitler erwähnt, sollten Sie einen service verwenden, um gemeinsame Zustände zu behandeln. Der Dienst könnte von Routen und Controllern genutzt werden, die das Datum benötigen. Im Controller binden Sie den Abfrageparameter an den Datumswert, der im Service behandelt wird, um ihn in der URL widerzuspiegeln.

Wenn Sie dies an mehreren Stellen verwenden müssen, sollten Sie eine Mixin schreiben, um sich nicht zu wiederholen. Werft hat einen Artikel Ember Best Practices: Extend vs Mixin geschrieben, den ich empfehlen könnte.

Einige Beispielcode, sollte nicht getestet, aber genug, um zu veranschaulichen:

// 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() 
}); 
Verwandte Themen