【问题标题】:Make Ember router transition to route from a click event使 Ember 路由器从点击事件转换为路由
【发布时间】:2015-02-16 06:02:31
【问题描述】:

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

index route 中,locations 数据被加载并在 应用程序控制器 上设置以传递到地图视图。之所以会这样,是因为其他路线可以为 locations 设置其他内容,从而更改地图上的标记。

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

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

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

【问题讨论】:

    标签: ember.js router


    【解决方案1】:

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

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

    只做send() 会使动作只冒泡到父视图。

    现在,如果您要在模板中使用 action 助手,在这种情况下,它会直接转到控制器。如果控制器不执行该操作,它将冒泡到路由。

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

    【讨论】:

    • 谢谢,它有效!仍然必须围绕 Ember 中的动作内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2013-04-28
    • 2018-03-22
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    相关资源
    最近更新 更多