动态添加事件到Meteor模板

时间:2017-01-23 19:52:20

标签: javascript meteor coffeescript pug

在我的Meteor.JS应用程序中,我想动态地在从数据库中获取的元素上添加点击事件。遗憾的是,单击后不会触发函数(但事件被添加到Template.algorithms .__ eventsMap属性中)。我想知道我的方法是否正确以及可以纠正什么来使该事件触发。

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

1 个答案:

答案 0 :(得分:0)

实施不正确。

解决方案:

在模板中循环“每个”时,附加一个类(例如id)并将文档的 {{#each alg}} <div class="clickHere" id="{{id}}"> h2={{name}} </div> {{/each}} 提供给它。

实施例

template.html - (抱歉!我从未使用过玉器)

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

template.js(对不起!,我也从未使用过coffeescript)

6B%2FdHJaYVYZ9%2BkbVbNwB%2FmxPXwJhzmfIC8aUWOg%2F2mFCWzyrXaRHFsYLZSVedck3UW3FppuUG0jn2f4JMVUx9Q%3D%3D

请将脚本转换为玉器和咖啡,这应该可以。