我对_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
?我做错了什么?
答案 0 :(得分:3)
您需要在想要效果的节点的父 DOM节点(而不是JQuery对象)上附加调用._uihooks
。在您的情况下,这是主页中的$('div.container').get(0)
。
您还需要插入或删除DOM节点,而不仅仅是反应性更新节点内的文本。这可以通过模板中的#each
或#if
来完成。
您还需要在钩子中手动插入和删除DOM节点。否则,只会记录插入内容,并且页面上不会显示任何内容。