2015-08-10 2 views
0

J'essaie d'utiliser le paquet 'pickadate' dans MeteorJS mais 'pickadate' change la date dans toutes les instances de template au lieu de celle où je veux. Les trois instances 'myTemplate' doivent être indépendantes, donc j'utilise reactiveVars local. La variable réactive 'day' stocke la date et lorsque le sélecteur de date se ferme, le sélecteur prend la date 'mise en surbrillance' du sélecteur et le 'jour' de l'instance myTemplate est défini sur cette date. (Dans « picker.on », « ce » fait référence au sélecteur.)Pickadate change la date sur plusieurs instances de template dans le météore

Template.myTemplate.helpers({ 
    myDay: function() { 
     var myDay = Template.instance().day.get(); 
     return moment(myDay).format('ddd YYYY-MM-DD'); 
    } 
}); 

Template.myTemplate.events({ 
}); 

Template.myTemplate.onCreated(function() { 
    this.day = new ReactiveVar(new Date('2015-08-02')); 
}); 

Template.myTemplate.onRendered(function() { 
    var tmplInstance = this; 

    var $input = $('div.ui.myDay.button').pickadate({ 
      containerHidden: '#hidden-input-outlet' 
    }); 
    var picker = $input.pickadate('picker'); 
    picker.on({ 
     close: function() { 
     tmplInstance.day.set(moment(this.get('highlight').obj)._d); 
     } 
    }); 

}); 

Mais pour une raison quelconque la nouvelle date se situe sur les trois cas, au lieu de simplement celui que je l'utilise sur pickadate.

Le code est sur meteorpad.com, où les boutons n'apparaîtront pas mais vous pouvez cliquer sur les dates.

La question est de savoir comment faire fonctionner le sélecteur de date des boutons indépendamment.

+0

En outre, la fenêtre contextuelle de pickadate montre en cliquant sur l'un des boutons, seul le pop-up du premier bouton va changer la date, et qui change la date sur les trois boutons. – Ferenc

Répondre

1

/client/app.js ligne: 22 changement

var $input = tmplInstance.$('div.ui.myDay.button').pickadate({ 

Le problème est que vous utilisez jquery pour obtenir par exemple pickadate mais nous avons besoin pour obtenir le bon, donc nous pouvons limiter notre élément jquery à l'instance actuelle de modèle uniquement http://docs.meteor.com/#/full/template_$

$() devient TemplateInstanceHere.$() par exemple:

this.$() ou Template.instance().$() dépend de l'endroit où vous appelez cette fr om et il trouvera des éléments uniquement dans cette instance de modèle.

Voici un bloc de travail: http://meteorpad.com/pad/omAxqAEPPjiHRLMDw/Copy%20of%20Datepicker%20(1)