在我的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
答案 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
请将脚本转换为玉器和咖啡,这应该可以。