我有一个 Meteor 模板,其中包括以下内容:
{{#with selected_recipe}}
{{>recipe}}
{{/with}}
在我的代码(Coffeescript)中,我想从我的事件映射(Backbone-style)中按名称调用一个函数:
Template.recipe.events = {
'click #btn-edit-recipe': 'editRecipe'
}
editRecipe = (event) ->
console.log @ #should log the selected_recipe object
#edit recipe
然而,这失败了。当我单击配方模板中的按钮时,我会Uncaught TypeError: Object editRecipe has no method 'call' (liveui.js:651)
从 Backbone 学习事件映射,也许 Meteor 是不同的。我可以让它工作:
Template.recipe.events = {
'click #btn-edit-recipe': -> editRecipe.call(@, event)
}
这是正确的方法吗?还是我犯了一些简单的错误?我一直喜欢以这种方式使用事件映射,因为它仅用几行代码就总结了渲染模板的行为。匿名函数可以将列表展开,使其更难阅读,当然它们也不能重用。