Контекст «this» в обработчиках событий шаблона Meteor (используя Handlebars для шаблонизации)
Быстрый вопрос о контексте обработчиков событий для шаблонов в Meteor (с Handlebars).
В разделе Документация по шаблонам (http://docs.meteor.com/#template_inst) упоминается, чтоОбъекты экземпляра шаблона находятся в качестве значения этого в созданных, обработанных и уничтоженных обратных вызовах шаблона ив качестве аргумента для обработчиков событий"В разделе Шаблоны (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}});
});
Здесь контекст «this» обработчика события «click .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-me в шаблоне Score:
Template.scores.events({
'click .click-me': function () {
console.log(this);
}
});
Теперь, если вы нажмете на промежуток, что вы будете зарегистрированы? Объект Window! Что я ожидал получить? Объект шаблона! Или, может быть, контекст данных, но это не так. Однако внутри обратных вызовов (например, Template.scores.rendered = function () {...}) контекст «this» всегда является экземпляром шаблона.
Я думаю, что мой реальный вопрос будет: это как-то связано с
ошибка в руле, метеоре или где-то посередине?немного неполная документация по шаблонам?я полностью неверно истолковал документы или не понял что-то фундаментальное о Метеоре или Руле?Спасибо!