使Ember路由器转换为单击事件的路由

时间:2014-12-17 16:08:31

标签: ember.js router

我在应用程序模板(例如{{view "map" locations }})中将控制器地图呈现为带有控制器的视图。 locations 是一系列位置模型。

索引路径中,位置数据被加载并设置在应用程序控制器上,以传递到地图视图。这种情况就是这种情况,因为其他路线可以为位置设置另一个内容,因此更改地图上的标记。

地图视图中,设置了传单地图,并从位置创建标记。我希望每个标记都是可点击的,因此应用程序将转换到详细描述“单击”位置的路径。因此,当我手头有位置模型时,我必须在创建后立即绑定一个click事件处理程序,如

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

我希望将路由内容保留在路由器 / 路由中。在模板中,我使用 link-to 帮助程序,但是如何从视图中定义的单击事件转换?我尝试使用 sendAction ,但似乎这在这里不起作用,因为视图在其范围内呈现,因此操作不会冒泡到应用程序路径。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

要使点击事件冒泡到路线,您必须将其发送到当前控制器。

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

仅执行send()会使操作仅向父视图冒泡。

现在,如果您在模板中使用action助手,那么它会直接进入控制器。如果控制器没有实现动作,它将冒泡到路线。

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