以下を含む Meteor テンプレートがあります。
{{#with selected_recipe}}
{{>recipe}}
{{/with}}
私のコード (Coffeescript) では、イベント マップ (バックボーン スタイル) から名前で関数を呼び出したいと考えています。
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)
}
これはこれを行う正しい方法ですか?または、単純なエラーを犯していますか?レンダリングされたテンプレートの動作が数行で要約されるので、私はいつもこの方法でイベント マップを使用するのが好きでした。匿名関数はリストを広げて読みにくくする可能性があり、もちろん再利用できません。