聆听模板外的事件,但仅限模板存在时

时间:2014-11-08 11:57:22

标签: javascript meteor iron-router

我使用IronRouter将我的应用程序构建到控制器(路由器)中,我开始附加我的事件。到目前为止一切都很好。

然后我开始使用{{#contentFor ...}}功能,从那以后,我的事件不再触发,因为我渲染相关元素的区域是不同DOM树的一部分。

有没有办法继续听这些事件?我考虑过简单地添加一个全局监听器,但这会从事件中消除很多灵活性。

CoffeeScript的:

MyRouter = RouteController.extend(...)
MyRouter.events(
  'click .inside': (event) ->
     alert("inside") # works
  'click .outside': (event) ->
     alert("outside") # does not work
)

HTML:

<button type="button" class="inside">
   inside
</button>

{{#contentFor 'anotherDomRegion'}}
  <button type="button" class="outside">
    outside
  </button>
{{/contentFor}}

和布局文件:

<h1>event demo</h1>
<div>
  {{> yield}}
</div>
<div>
  {{> yield 'anotherDomRegion'}}
</div>

1 个答案:

答案 0 :(得分:1)

我自己遇到了同样的问题。我能解决的唯一方法是将contentFor设置为模板,以便将事件分配给该模板。

{{> contentFor region="anotherDomRegion" template="anotherDomRegion"}}

然后;

<template name="anotherDomRegion"> ... </template>

Template.anotherDomRegion.events({ ... });
祝你好运!