【问题标题】:Ember.js: Internal hyperlinks when pulling from a databaseEmber.js:从数据库中提取时的内部超链接
【发布时间】:2015-09-28 16:43:29
【问题描述】:

我的数据库有时包含指向我的 Ember.js 应用程序中其他路由的超链接(常规 HTML“a”标签)。问题是我不知道如何拥有它,因此这些链接将在 Ember 中转换,而不必重新加载页面。有什么办法可以解决这个问题?

示例:我有一个用户创建的博客 (/blog) 帖子。此博客文章将包含指向网站其他部分的链接,例如联系人 (/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

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您需要存储路由名称而不是存储 HTML 元素,因为如果我理解得很好,您可以存储:

    <a href="/contact"></a>
    

    代替:

    contact
    

    因此,如果您重写逻辑以仅存储路由名称,则可以让 Ember 处理。

    如果您有存储路由名称的变量(在您的示例中为/contact)并且它是product 的成员,那么您可能可以这样访问它:

    product.link
    

    您可以将此字符串传递给 {{link-to}} 助手,这将导致正确的 Ember 链接:

    {{#link-to product.link}}Link{{/link-to}}
    

    【讨论】:

    • 感谢您的回答,但我应该更详细。链接将与其他 HTML 内容混合在一起。管理员用户可以使用 WYSIYG 编辑器 (CKEditor) 编辑内容。我想让他们使用普通的 HTML 元素。考虑它的最简单方法是博客文章。用户应该能够创建允许链接到网站不同部分的内容。
    • 好的,我明白了。解决方案是为 HTML 锚链接创建解析逻辑,并从 HTML 标记路由名称、样式、元素值中提取,然后在 Ember 中使用 link-to 助手,但是,这很复杂。
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2014-06-20
    相关资源
    最近更新 更多