2

目前,meteor支持有限数量的事件,我们可以从模板定义中做出反应。我想要一种方法来对超出此预定义列表的事件做出反应。我希望可以自由地将任何事件,甚至自定义事件添加到模板中的可能事件列表中。

我的一个想法是在某处设置一个 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:这个问题的公认答案也只是一种解决方法。

4

1 回答 1

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 非常有用。

于 2012-09-28T19:57:53.157 回答