目前meteor supports a limited number of events我们可以从模板定义做出反应。我想要一种方法来响应超出此预定义列表的事件。我希望自由地将任何事件(甚至自定义事件)添加到模板中的可能事件列表中。
我的一个想法就是在某个地方设置一个jquery事件处理程序来监听不支持的事件并让它设置一个会话变量:
$(form).submit( ->
Session.set('formSubmitted', true)
然后在渲染模板时使用该会话变量:
Template.confirmation.submitted = ->
return Session.get('formSubmitted')
<template name="confirmation">
{{#if submitted}}
<!-- do whatever -->
{{/if}}
</template>
但这只是一种解决方法,并没有真正解决这个问题。有没有一个真正的流星方式这样做?这是我可以使用新的Spark实现吗?
注意:请忽略我在此处使用提交事件的事实。我知道我可以将点击事件绑定到提交按钮,但这不是重点。
注意2: this question的已接受答案也只是一种解决方法。
答案 0 :(得分:1)
rendered
回调是我用来做这件事的。
http://docs.meteor.com/#template_rendered
回调为您提供了模板实例,您应该使用它来查找所需的dom元素:http://docs.meteor.com/#template_inst
下面未经测试的示例;)
Template.foo.rendered = ->
$(this.find("form")).submit ->
Session.set 'formSubmitted', true
使用Session变量而不是切换视图我认为是一个品味问题。
我在会话中存储了一个应用状态,可以切换模板。此外,骨干软件包对于提供一些有意义的URL非常有用。