J'ai un service qui gère l'authentification de l'utilisateur et obtient les données de l'utilisateur via un modèle. L'une des données qu'il récupère est une date pour le début d'un programme diététique. Je veux utiliser cette date pour calculer un nombre: le nombre de jours depuis le début du programme, donc je peux utiliser ce nombre pour interroger un modèle différent qui tire le contenu d'un CMS.Comment utiliser une propriété de service dans un itinéraire?
Je n'ai pas pu accéder à ce numéro ailleurs que sur un modèle.
C'est le contrôleur pour Dashboard
import Ember from 'ember';
export default Ember.Controller.extend({
authManager: Ember.inject.service('session'),
});
Ceci est le modèle
{{#if authManager.currentUser.activeCleanse}}
You are on a cleanse that starts
{{authManager.currentUser.cleanse_start}}
{{else}}
You are not on a cleanse.
{{/if}}
Tout le code ci-dessus fonctionne, mais lorsque je tente quelque chose comme ça dans le contrôleur:
activeCleanse: Ember.computed(function(){
return this.get('authManager.currentUser').then((user) => {
return user.cleanse_active;
}.bind(this))
}),
startDate: Ember.computed(function(){
return this.get('authManager.currentUser').then((user) => {
return user.cleanse_start;
}.bind(this))
})
Et remplacer le modèle avec:
{{#if activeCleanse}}
You are on a cleanse that starts {{startDate}}
{{else}}
You are not on a cleanse.
{{/if}}
Il ne répond pas à activeCleanse
être faux (le modèle ne semble être la vérification de son existence) et l'étiquette de ce jour montre que [object Object]
.
Je suis en train d'essayer d'obtenir la date dans le contrôleur afin que je puisse le manipuler pour passer comme l'un des paramètres à la route du tableau de bord, qui obtient un modèle basé sur la journée spécifique:
Le tableau de bord Route
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.get('store').queryRecord('cleanse-post', {
filter: {
tag: 'day-1'
}
});
},
});
Je veux être en mesure de définir dynamiquement la balise pour le filtre basé sur le calcul de la date.
Toute aide serait appréciée. J'ai l'impression d'avoir tourné en rond avec ça et je n'ai aucune idée de ce qu'il faut essayer.
Merci pour la clarification, mais votre solution ne semble pas travailler.Le hook 'setupController()' ne semble pas avoir d'effet du tout. Maintenant, le modèle ne reconnaît même pas l'existence de la propriété 'activeCleanse'. J'ai aussi essayé de faire rendre une promesse au contrôleur, mais cela n'a pas non plus donné de résultats. –
Désolé, je n'ai pas vu le code que vous avez fourni. J'ai mis cela dans le contrôleur et maintenant je reçois une erreur 'TypeError: Impossible de lire la propriété '_attributes' de undefined'. Aucune idée de ce à quoi cela fait référence mais le contrôleur est tout ce qui a changé. Merci encore pour votre aide. –
J'ai mis à jour le code au second point. Je ne suis pas au courant de ce que cette promesse 'this.get ('authManager.currentUser')' retournera. Assurez-vous que vous recevez le 'user.cleanse_start' correctement. – kumkanillam