2017-01-23 7 views
0

В моем приложении Meteor.JS Я хочу динамически добавлять события click для элементов, взятых из базы данных. К сожалению, функция не запускается после клика (но событие добавлено в свойство Template.algorithms .__ eventsMap). Мне интересно, подходит ли мой подход и что можно исправить, чтобы сделать этот триггер событий.Dynamicaly добавить событие в шаблон Meteor

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'}) 
    } 
}); 

Пожалуйста конвертировать скрипты в нефрит и кофе, и это должно сработать.