2014-12-17 3 views
0

Я получил карту Leaflet, представленную как представление с контроллером в шаблон приложения как {{view "map" locations }}. местоположения - это массив моделей местоположения.Сделать переход Ember router на маршрут от события click

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

В карты посмотреть карту листовки устанавливаются и маркеры создаются из мест. Я хочу, чтобы каждый маркер был доступен по клику, поэтому приложение переходит на маршрут, где подробно описано «щелкнутое» местоположение. Therefor я должен связать обработчик события клика сразу после создания, когда у меня есть модель местоположения под рукой, как

mapMarker.on('click', function(ev) { 
    // Do transition to 'location' with model location 
}); 

Я хотел бы, чтобы держать вещи маршрутизации в маршрутизатор/маршрутов. В шаблоне я бы использовал вспомогательный помощник -link-to, но как перейти от события клика, определенного в представлении? Я попытался использовать sendAction, но, похоже, это не работает из-за того, что представление визуализируется в его области видимости, поэтому действие не доходит до маршрута приложения. Есть идеи?

ответ

1

Для того, чтобы событие click появилось на пути к маршрутам, вы должны отправить его текущему контроллеру.

this.get('controller').send('someEvent') 

Doing просто send() делает пузырь действия вверх только виду родительский.

Теперь, если бы вы использовали вспомогательный инструмент action в своем шаблоне, в этом случае он переходит непосредственно к контроллеру. И если контроллер не реализует действие, он будет пузыриться до маршрута.

http://emberjs.com/guides/templates/actions/#toc_action-bubbling

+0

Спасибо, все работает! Все еще нужно обернуть голову вокруг действия в Эмбер. – Oliver

Смежные вопросы