Meteor(ハンドルバー付き)のテンプレートのイベントハンドラのコンテキストに関する簡単な質問。 テンプレートインスタンスオブジェクトが、作成されたこの値として求めレンダリング、イベントの引数としてテンプレートコールバックとを破壊している」と記載されているテンプレートのインスタンス(http://docs.meteor.com/#template_inst)上のドキュメントのセクションでMeteorテンプレートのイベントハンドラでの "this"のコンテキスト(テンプレート用のハンドルバーの使用)
- ハンドラ「テンプレートセクション(http://docs.meteor.com/#templates)で
- それが言う」最後に、あなたはイベントハンドラのテーブルを設定するテンプレート関数でイベント宣言を使用することができます。形式は、イベント地図で文書化されている。このイベントハンドラへの引数はイベントをトリガーした要素のデータコンテキスト。は「
まあ、これは部分的にしか真であるのは、ドキュメントからの例を使ってみましょう:。ここで
<template name="scores">
{{#each player}}
{{> playerScore}}
{{/each}}
</template>
<template name="playerScore">
<div>{{name}}: {{score}}
<span class="givePoints">Give points</span>
</div>
</template
Template.playerScore.events({
'click .givePoints': function() {
Users.update({_id: this._id}, {$inc: {score: 2}});
});
『テンプレートは確かである『をクリックし.givePoints』イベントハンドラのこの』文脈playerScoreのインスタンスのは、HTML変更してみましょう:。
<template name="scores">
<span class="click-me">Y U NO click me?<span>
{{#each player}}
{{> playerScore}}
{{/each}}
</template>
<template name="playerScore">
<div>{{name}}: {{score}}
<span class="givePoints">Give points</span>
</div>
</template>
を...とスコアテンプレートに.click-私のためのイベントハンドラを追加します。
Template.scores.events({
'click .click-me': function() {
console.log(this);
}
});
ここでスパンをクリックすると、何が記録されますか? Windowオブジェクト!私は何を得ることを期待しましたか?テンプレートオブジェクト!あるいは、データコンテキストかもしれませんが、どちらもありません。ただし、コールバック(たとえば、Template.scores.rendered = function(){...})では、「this」のコンテキストは常にテンプレートインスタンスです。
私は私の本当の問題は次のようになり推測:これはどこかの間でハンドルバー、流星かに
- でバグを行うに何かありますか?
- テンプレートのドキュメントが少し不完全ですか?
- メテオまたはハンドルバーについて、完全に何かを理解していないか、または何か基本的なものを理解していない
ありがとう!
右の質問です。私はいつも 'function(event、template)'と 'template.data'を使ってイベントのデータにアクセスしました。 – Twark
私はそれを2度upvoteすることができます – Ruby
@ТаняТ。好きなように質問をマークできます;-) – think01