2017-10-13 1 views
1

Je dois transmettre des données supplémentaires à un widget pour déterminer certaines options de propriété/accessibilité de certains de mes utilisateurs. Je suivais les instructions ici afin de mettre en place une aide pour transmettre les données:Apostrophe Widget Helpers

http://apostrophecms.org/docs/technical-overviews/how-apostrophe-handles-requests.html#template-helpers-invoking-synchronous-java-script-code-from-your-template

J'ai couru quelques problèmes, cependant. Le code ci-dessous pour le fichier du widget:

module.exports = { 
    extend: 'apostrophe-widgets', 
    label: 'Unsubscribed Content', 
    //contextualOnly: true, 
    construct: function(self, options) { 

    self.addHelpers({ 
     isSubscribed: function() { 

     var req = self.apos.templates.contextReq; 
     var isSubbed = false; 
     var currentYear = new Date().getFullYear(); 
     for(var i = 0; i < req.user.subscriptions.length; i++) { 
      if (req.user.subscription[i].subscriptionYear == currentYear) { 
      isSubbed = true; 
      } 
     } 

     return isSubbed; 
     } 
    }); 

    }, 
    addFields: [ 
    { 
     type: 'area', 
     name: 'area', 
     label: 'Area', 
     contextual: true 
    } 
    ] 
}; 

Je ne lance pas dans des erreurs, mais lorsque je tente d'accéder réellement l'aide à partir du modèle du widget, il ne peut pas trouver la méthode. J'ai essayé les moyens suivants et essayez d'accéder à récupérer la valeur:

{{ apos.isSubscribed() }} 
{{ isSubscribed() }} 
{% if apos.isSusbcribed() %} 
{% if isSubscribed() %} 

Mais tous me donner une des erreurs suivantes:

Erreur: Impossible d'appeler apos["isSubscribed"], qui est undefined ou falsey Erreur: Impossible d'appeler clap, qui est undefined ou falsey

Est-ce que je fais quelque chose de mal ici?

Merci!

Répondre

3

Dans votre modèle, vous devriez être en mesure d'appeler apos.modules['my-module-widgets'].isSubscribed

Apostrophe a également une enveloppe console.log qui peut être utilisé dans les modèles comme {{ apos.log(somethingOfInterest) }}, utile pour renifler ce genre de chose.

1

Vous pouvez également fournir un alias dans votre module.exports. alias: 'myalias'

Ensuite, vous pouvez appeler {{ apos.myalias.isSubsribed() }}