@dreamniker

Как вызвать функцию после отрисовки всего шаблона (включая внутренние шаблоны) или изменить добавленный тег с помощью Javascript?

Как отследить когда отрисовка страницы закончилась если используется такая конструкция:
<template name="creator">
{{#each banners}} 
{{> banner}} 
{{/each}}
</template>

Хелперы Template.creator.rendered и Template.creator.created вызываются до того как отрисуются все экземпляры banners а если вызывать Template.banners.rendered то он вызывается много раз вместо того чтобы сработать 1 раз в конце.

Или как изменить добавленный тег с помощью Javascript ?

<template name="banner">
    <textarea cols="33" rows="1" id="text1" style = "resize: none">{{group}}</textarea>
</template>


для каждого нужно вызвать
$(textarea).height(textarea.scrollHeight);
(чтобы высота текстового поля стала равной высоте содержимого и не было скролла)
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 1
evilandfox
@evilandfox
Javascript, meteor, Qt
Можно использовать хак с Meteor.defer. Переданная в нее функция исполнится после отрисовки DOM:

Template.creator.onRendered(function(){
  Meteor.defer(function(){
    //Код
  });
});


в вашем случае, скорее всего, будет вот так

Template.creator.onRendered(function(){
  Meteor.defer(function(){
    $('textarea').each(function(){
      $(this).height(this.scrollHeight);
    });
  });
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы