2014-11-08 1 views
1

Я использую 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

Я столкнулся с той же проблема сама. Единственный способ, с которым я мог обойти это, - установить контент для шаблона, чтобы вы могли назначить свои события этому шаблону.

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

then;

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

and;

Template.anotherDomRegion.events({ ... }); 

Удачи вам!