我的数据库有时包含我的Ember.js应用程序中其他路由的超链接(常规HTML" a"标记)。问题是我不知道怎么做,所以这些链接将在Ember中转换,而不必重新加载页面。有没有办法解决这个问题?
示例:我有一个用户创建的博客(/博客)帖子。此博客文章将包含指向该网站其他部分的链接,例如联系人(/ contact)。如何在博客文章中获取链接以通过Ember过渡,而不是每次点击链接时重新加载应用程序?
编辑:还没有找到一个简单的方法来解决Ember中的这个问题。我认为这将是一个比它更常见的问题。我确实找到了使用jQuery解决问题的非常基本的方法。我抓住所有" a"在内容区域内单击并通过try / catch块运行它。如果它无法通过Ember过渡,则会抛出错误,这意味着我们可以使用传统的Javascript进行路由。这可能远非最佳,但对我来说已经足够了。Ember.$('.ember-linkify a').click (e) ->
e.preventDefault()
a = $(this).attr 'href'
try
@transitionTo a
catch error
window.location.href = a
答案 0 :(得分:0)
您需要存储路由名称而不是存储HTML元素,因为如果我理解你存储好:
<a href="/contact"></a>
而不是:
contact
因此,如果您重写逻辑以仅存储路由名称,则可以使Ember处理该路径名。
如果您有变量存储路由名称(在您的示例中为/contact
)并且它是product
的成员,那么您可能会像这样访问它:
product.link
您可以将此字符串传递给{{link-to}}
帮助程序,这将导致正确的Ember链接:
{{#link-to product.link}}Link{{/link-to}}