2015-06-05 14 views
5

Ecco il mio codice eventi:Meteorjs: come posso utilizzare variabili definite in eventi modello all'interno dei miei helper di modelli?

Template.pricing_report.events({ 
     'click #btn_report_filter': function(){ 

     from_date = $("#datepicker1").val(); 
     to_date = $("#datepicker2").val(); 


     date_n = new Date(from_date); 
     from_iso = date_n.toISOString(); 

     date_o = new Date(to_date); 
     to_iso = date_o.toISOString(); 
    } 

}); 

voglio usare le variabili from_iso e to_iso nei miei aiutanti, che è il seguente:

Template.pricing_report.helpers({ 

    'preportdata':function(){ 
     return price.find(); 
}, 

    'preportdata_test':function(){ 
     return price.find({ 
      date: { 
       $gte: from_iso, 
       $lt: to_iso 
      } 
     }); 
} 

Come potete vedere, ho usato il mio from_iso e to_iso all'interno della funzione di ricerca ma non riesco a ottenere il valore della funzione di aiuto.

Ho anche provato a utilizzare console.log (from_iso) nella mia funzione di supporto ma non visualizza nulla.

Quindi, come posso utilizzare queste variabili?

risposta

2

Si dovrebbe leggere su ReactiveVar: http://docs.meteor.com/#/full/reactivevar_pkg

esempio rapida:

Template.pricing_report.onCreated(function() { 
    this.date_n = new ReactiveVar(); 
}); 

Template.pricing_report.events({ 
    'click #btn_report_filter': function (e, tmpl) { 

     tmpl.date_n.set(new Date(from_date)); 

    } 
}); 

Template.pricing_report.helpers({ 
    'helperName':function() { 
     var tmpl = Template.instance(); 
     return tmpl.date_n.get(); 
    }); 
} 
+0

si può dare qualche spiegazione in più su questo, sto avendo un problema comprendere il concetto, perché io sono nuovo di meteora, per esempio cosa fa this.date_n = new ReactiveVar(); lo fa? cosa sta succedendo nella sezione eventi e cosa sta succedendo nella sezione helpers? –

+0

Questo è tutto su ReactiveVar (puoi google per esso se hai bisogno di maggiori informazioni) fondamentalmente nell'evento ciclo di vita 'onCreated' vuoi creare una nuova variabile reattiva che vivrà sulla tua istanza del modello. Quindi nella parte degli eventi è possibile impostare il valore per la variabile reattiva 'tmpl' qui è uguale a 'this' nell'evento onCreated. Userete qui la funzione setter 'set()'. Successivamente nella sezione helper è possibile utilizzare la funzione 'get()' per ottenere il valore corrente dalla variabile reattiva. Nella sezione helper è necessario trovare l'istanza del modello da Template.instance(). – juliancwirko

1

Si potrebbe utilizzare una variabile Session per memorizzare le variabili di istanza modello. Fornisce un oggetto globale sul client che è possibile utilizzare per memorizzare un insieme arbitrario di coppie chiave-valore. Usalo per memorizzare cose come l'elemento attualmente selezionato in un elenco. Nel tuo caso, si potrebbe provare qualcosa di simile per il modello (non testata):

Template.pricing_report.events({ 
    'click #btn_report_filter': function() { 
     var from_date = $("#datepicker1").val(), 
      to_date = $("#datepicker2").val(),  
      from = new Date(from_date),  
      to = new Date(to_date); 

     Session.set("to_date", to); 
     Session.set("from_date", from); 
    } 
}); 

Template.pricing_report.helpers({ 

    'preportdata': function(){ 
     return price.find(); 
    }, 

    'preportdata_test': function() { 
     return price.find({ 
      date: { 
       $gte: Session.get('to_date'), 
       $lt: Session.get('from_date') 
      } 
     }); 
    } 
}); 
+0

Ho provato il tuo codice ma non funziona, non so perché ma Session.get ('to_date') e Session.get ('from_date') non ottengono alcun valore. –

+0

che ha funzionato, grazie. –

Problemi correlati