2017-01-23 3 views
0

In meiner Meteor.JS App möchte ich Click-Ereignisse dynamisch auf Elemente aus der Datenbank hinzufügen. Leider wird die Funktion nach dem Klick nicht ausgelöst (aber das Ereignis wird der Eigenschaft Template.algorithms .__ eventsMap hinzugefügt). Ich frage mich, ob meine Herangehensweise richtig ist und was korrigiert werden kann, um dieses Ereignis auszulösen.Ereignis dynamisch zu Meteor Vorlage hinzufügen

main.coffee:

Template.algorithms.onCreated -> 
    Template.instance().subscribe('algorithm-descriptions', { 
    onReady:() -> 
     for alg in AlgorithmDescriptions.find().fetch() 
     Template.algorithms.events({ 
      "click .#{alg.button}":() -> 
      $(".#{alg.divClass}").scrollintoview({duration: 'slow'}) 
    }) 
}) 

algorithms.jade:

.col-md-2 
    ul 
    each alg in algorithmDescriptions 
     li(class=alg.button)=alg.name 
.col-md-10 
    each alg in algorithmDescriptions 
    div(class=alg.div) 
     h2=alg.name 

Antwort

0

Die Implementierung ist nicht korrekt.

Lösung:

Während er durch ‚jeweils‘ in der Vorlage Looping, befestigen eine Klasse (z.B. 'clickHere') und geben dem id des Dokuments darauf.

Beispiel

template.html - (Leider !, Ich habe selber nie Jade)

{{#each alg}} 
      <div class="clickHere" id="{{id}}"> 
       h2={{name}} 
      </div> 
     {{/each}} 

template.js (Leider !, ich auch nie benutzt Coffeescript)

Template.algorithms.events({ 
    "click .clickHere" : function(){ 
     var id=this._id; 
     $("#"+id).scrollintoview({duration: 'slow'}) 
    } 
}); 

Bitte Konvertiere die Skripte in Jade und Kaffee und das sollte funktionieren.

Verwandte Themen