2017-01-23 117 views
0

在我的Meteor.JS應用程序中,我想動態地添加從數據庫獲取的元素上的點擊事件。不幸的是,點擊後不會觸發函數(但事件被添加到Template.algorithms .__ eventsMap屬性中)。我想知道我的方法是否正確,並且可以糾正哪些事件可以觸發該事件。Dynamicaly爲流星模板添加事件

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 

回答

0

實現是不正確。

解決方案:

雖然循環通過「各自」在模板,附接一類(例如'clickHere'),並給所述文檔的id給它。

template.html - (對不起!我從未使用玉)

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

template.js(對不起!我還從來沒有使用過的CoffeeScript)

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

請將腳本轉換爲玉石和咖啡,這應該工作。