更新:查看下方 Michael Lang 对 Ember 1.8.1+ 的评论
Myslik 的答案(根本不使用link-to
,而是使用action
and then transitionToRoute
)的问题在于它对SEO 没用,搜索引擎机器人什么也看不到。
如果您希望将链接指向的内容编入索引,则最容易在<a href=x>
其中找到一个好人。最好使用link-to
这样您的链接 URL 与您的路由 URL 保持同步。我使用的解决方案既提供了完成工作的操作,又方便link-to
地索引页面。
我覆盖了一些功能Ember.LinkView
:
Ember.LinkView.reopen({
action: null,
_invoke: function(event){
var action = this.get('action');
if(action) {
// There was an action specified (in handlebars) so take custom action
event.preventDefault(); // prevent the browser from following the link as normal
if (this.bubbles === false) { event.stopPropagation(); }
// trigger the action on the controller
this.get('controller').send(action, this.get('actionParam'));
return false;
}
// no action to take, handle the link-to normally
return this._super(event);
}
});
然后我可以在 Handlebars 中指定要执行的操作以及传递操作的内容:
<span {{action 'view' this}}>
{{#link-to 'post' action='view' actionParam=this}}
Post Title: {{title}}
{{/link-to}}
</span>
在控制器中:
App.PostsIndexController = Ember.ArrayController.extend({
actions: {
view: function(post){
this.transitionToRoute('post', post);
}
}
}
这样,当我缓存页面的渲染副本并将其提供给索引机器人时,机器人将看到一个带有 URL 的真实链接并跟随它。
(另请注意,transitionTo
现在不赞成使用transitionToRoute
)