关于Meteor _uihooks的混乱以及触发它们的原因

时间:2015-02-01 06:20:10

标签: meteor meteor-blaze

我对_uihooks如何运作感到困惑。看看下面的代码:

home.html的

<template name="homePage">
  <section id="home-page">
    <div class="container">
      <h1>Thought of the day:</h1>

      <div id="totd">
        <span>{{thought}}</span>
      </div>

    </div>
  </section>
</template>

home.coffee

timer = 0

Template.homePage.rendered = ->
  this.find('#totd')._uihooks =
    insertElement: (node, next) ->
      console.log 'Inserted'
    removeElement: (node) ->
      console.log 'Removed'

  Session.set 'randThought', Random.choice thoughts
  timer = Meteor.setInterval shuffleThoughts, 5000

Template.homePage.destroyed = ->
  Meteor.clearInterval timer

thoughts = [
  "My socks smell like sausages."
  "I sure wish I had a bag of crisps right about now."
  "I need more thoughts."
]

Template.homePage.helpers
  thought: -> Session.get 'randThought'

shuffleThoughts = ->
  Session.set 'randThought', Random.choice thoughts

我喜欢随意的想法淡出/淡出。但我从来没有看到任何东西出现在控制台中,所以显然它不起作用。究竟是什么触发了_uihooks?我做错了什么?

1 个答案:

答案 0 :(得分:3)

您需要在想要效果的节点的 DOM节点(而不是JQuery对象)上附加调用._uihooks。在您的情况下,这是主页中的$('div.container').get(0)

您还需要插入或删除DOM节点,而不仅仅是反应性更新节点内的文本。这可以通过模板中的#each#if来完成。

您还需要在钩子中手动插入和删除DOM节点。否则,只会记录插入内容,并且页面上不会显示任何内容。

_uihooks使用示例here解释here

我做了another example with your code working in meteorpad