2015-06-26 3 views
3

Я просто обнаружить, что это хороший образец для ограничения поиска DOM для текущего шаблона вместо document, так что я начал, чтобы заменить все document.querySelector() на template.find() и JQuery $(selector) по template.$(selector). Внутри событий все прекрасно работает, но тогда в этом коде (onRendered) он просто не работает, и я получаю: TypeError: undefined is not an object (evaluating 'template.$') в консоли:

Template.icons.onRendered(function() { 
    template.$('.demo-default').tooltipster({ 
     offsetY: 2, 
     theme: 'tooltipster-shadow' 
    }) 
}); 

Кто-нибудь знает, что происходит?

ответ

2

Внутри событий жизненного цикла обратные вызовы, такие как onCreated, onRendered и onDestroyed, текущий экземпляр шаблона связан с this ключевого слова.

Просто замените template (который не определен в этом контексте, кстати) по this:

Template.icons.onRendered(function() { 
    this.$('.demo-default').tooltipster({ 
    offsetY: 2, 
    theme: 'tooltipster-shadow' 
    }) 
}); 
+0

Вы правы, но тогда возникает вопрос: где я должен использовать шаблон $.? Внутри помощников? ... –

+2

@PauloJaneiro только в событиях, я думаю, где у вас есть функция, например. 'Template.MyTemplate.events ({'click .my-button': function (event, template) {...}});'. Внутри помощников вы можете использовать 'Template.instance()' вместо этого. –

Смежные вопросы