jQuery and MeteorКак запустить jQuery в реактивной среде?
Meteor реагирует, родившись в мире веб-приложений, где есть только одна загрузка начальной страницы, jQuery родился в мире созданных сервером страниц.
Итак, вопрос в том, когда нужно вызвать плагин jQuery на шаблонах Meteor?
1) Нагрузка на страницу -> Не работает. Данные еще нет.
Template.contextualFeed.feedItems = ->
Feed.find()
$("abbr.timeago").timeago() # Calling the feed right away is useless as Feed.find() is initially empty and will populate a bit later when subscription is delivering the initial data.
<template name="contextualFeed">
<ul class="feed {{isActive "feed"}}">
{{#each feedItems}}
<li class="popup-holder">
{{> contextualFeedItem}}
</li>
{{/each}}
</ul>
</template>
2) На каждом item-> работ, но кажется невероятно расточительно.
Template.contextualFeed.feedItems = ->
Feed.find()
Template.contextualFeed.jQueryMe = ->
$("abbr.timeago").timeago() # Works, but seems incredibly wasteful
<template name="contextualFeed">
<ul class="feed {{isActive "feed"}}">
{{#each feedItems}}
<li class="popup-holder">
{{> contextualFeedItem}}
{{jQueryMe}}
</li>
{{/each}}
</ul>
</template>
3) После того, как после того, как загружены все элементы -> работы, но еще не так элегантно, как это должно быть ...
Template.contextualFeed.feedItems = ->
Feed.find()
Template.contextualFeed.jQueryMe = ->
Meteor.defer ->
#(cut) some ugly code to make sure it only executes once.
$("abbr.timeago").timeago() # Works, but seems incredibly wasteful
<template name="contextualFeed">
<ul class="feed {{isActive "feed"}}">
{{#each feedItems}}
<li class="popup-holder">
{{> contextualFeedItem}}
{{jQueryMe}}
</li>
{{/each}}
</ul>
</template>
4) не правда там какое-то событие, которое возникает, когда Данные загружаются не на каждый элемент отдельно, как на добавление?
Итак, у вас есть более чистый способ вызова jQuery в шаблонах Meteor?
PS: Примеры кода в CoffeeScript ... Будьте вежливы, несмотря на это;)
Эй, theresaanna, да, я пытаюсь использовать плагин jQuery, который преобразует дату/временную метку в «2 часа» назад. В примере 2 код инициализации jQuery будет в основном вызываться внутри цикла, один раз для элемента подачи, который кажется немного перегруженным ... – thomasf1
спасибо за ваш ответ ... он заставил меня думать и добавить обратный вызов, чтобы подписаться действительно вещь, которую я должен попробовать ... в прошлой структуре, которую я использовал, просто был способ привязать событие к коллекции, чтобы он мог уведомить другие части приложения, когда он был загружен ... возможно, я Найду что-то подобное в источнике ... – thomasf1