我有一个名为dropdownVisible的会话。
Session.setDefault('dropdownVisible', false)
我有以下模板/事件
template(name="authUser")
a(id="user-link") User Link
if dropdownVisible
.dropdown-container
p This is a dropdown
Template.authUser.events
'click #user-link': ->
if Session.equals('dropdownVisible',false)
Session.set('dropdownVisible', true)
else
Session.closeDropdown()
每当我点击#user-link时,下拉列表都会切换打开/关闭。这很好用。 现在我尝试在下拉容器中添加一个额外的类,只要它被渲染。 所以我有
Template.loggedOut.rendered = ->
$('.dropdown-container').addClass("test")
这会在第一次渲染时添加类,但不会在此之后添加。我怀疑它与反应性有关。我尝试将它包装在Tracker.autorun函数中,但这并不起作用。如何在每次下拉列表打开时调用addClass。
**编辑
我使用了addClass示例,但实际上我想使用_uihooks为下拉列表设置动画。我只是使用了addClass示例来使示例更简单,因为它可能与我面对uihooks的问题类似。
Template.loggedOut.rendered = ->
@find('.parent-of-dropdown-container')._uihooks =
insertElement: (node, next) ->
$(node).addClass("animate").insertBefore(next)
答案 0 :(得分:0)
我觉得应该这样做,不是吗?
Template.authUser.events
'click #user-link': ->
if Session.equals('dropdownVisible',false)
Session.set('dropdownVisible', true)
$('.dropdown-container').addClass("test")
else
Session.closeDropdown()
答案 1 :(得分:0)
好的,我发现了问题。
insertElement函数中定义的'next'参数是位于插入元素('node')之后的DOM元素。在这个例子中,没有,因为'node'(。dropdown-container)是包装容器中唯一的元素。因此它永远不会被插入。