4

我找到了一些特定于 jQuery 的答案,但没有与 Ember.Js 相关。我对 Ember 很陌生,所以我可能会遗漏一些明显的东西,如果是这样的话,我的错。

我使用控制器内部的操作创建了一个可点击的 div,如下所示:

goHere: function(article) {
    this.transitionTo('view-article',{article_id: article.article_id});
}

但是现在我在那个 div 中的锚点不起作用。知道如何解决这个问题吗?

编辑:我无法向您展示所有代码,因为这是一个巨大的项目,但基本上我们有主题,每个主题中都有一系列文章。文章在主页上列出如下:

<div class="article pull-left span10"{{action goHere this}} >
    ...
    <a href="url.com">XX</a>
    ...
</div>

并且该锚标记在单击时会触发 goHere 操作,而不是重定向到 url.com

4

3 回答 3

3

尝试

goHere: function(article) {
    this.transitionToRoute('view-article',article);
}

如果这不起作用,则 jsbin/jsfiddle 将有助于获得更多上下文。

请参阅:http ://emberjs.com/api/classes/Ember.Controller.html#method_transitionToRoute

于 2013-07-26T02:01:15.383 回答
2

在控制器中使用 transitionTo 已被弃用,但它应该与折旧警告一起使用。使用 transitionToRoute (如@RyanHirsch 回答)是正确的方法。

您可以更好地使用 linkTo 助手

   {{#linkTo 'view-article' model_to_be_passed}}Go to View Article {{/linkTo}}
于 2013-07-26T04:44:37.773 回答
0

在我的例子中,我使用的是用户输入的链接,这些链接被服务器上的 rails_autolink 变成了锚标签,所以我无法用 ember 链接替换这些链接。

我可以通过几个步骤来解决这个问题。首先,我将这个类添加autolink到我使用自动链接生成的所有链接中。然后在周围 div 的 Ember 操作中,我做了:

if event.target.className == 'autolink'
    @send('handleAutolink')
else
    // (handle non-link click)

然后在 ApplicationRoute 上,我为 handleAutolink 操作添加了一个处理程序,该操作基本上取消了 ember 操作并使用 javascript 打开链接:

handleAutolink: ->
  event.preventDefault()
  window.open(event.target.href, '_blank')

我意识到这可能是一个巨大的黑客,但我很高兴听到另一种方法!

于 2014-02-06T17:52:44.490 回答