【发布时间】:2013-08-27 19:24:11
【问题描述】:
我正在尝试使链接在多个路由上保持“活动”,例如 /#/users 和 /#/user。
有什么想法吗?
【问题讨论】:
标签: ember.js
我正在尝试使链接在多个路由上保持“活动”,例如 /#/users 和 /#/user。
有什么想法吗?
【问题讨论】:
标签: ember.js
您可以重新打开 Ember 的 LinkView 并执行类似的操作(允许 currentWhen 包含空格分隔的值)
Ember.LinkView.reopen({
active: function() {
// we allow link-to's currentWhen to specify multiple routes
// so we need to check each one of them
var loadedParams = Ember.get(this, 'loadedParams');
var currentWhen = this['current-when'] || this.currentWhen;
currentWhen = currentWhen || (loadedParams && loadedParams.targetRouteName);
if (currentWhen && currentWhen.indexOf(' ') >= 0) {
var currents = currentWhen.split(' ');
router = Ember.get(this, 'router');
for (var i = 0; i < currents.length; i++) {
var isActive = router.isActive.apply(router, [currents[i]]);
if (isActive)
return isActive;
}
return false;
}
return this._super();
}.property('resolvedParams', 'routerArgs')
});
【讨论】:
这是一个完全的 hack,但它在 Ember 1.0.0 中有效。在用户路由处于活动状态时使指向用户的链接保持活动状态:
App.UserRoute = Ember.Route.extend({
activate: function() {
setTimeout(function() {
$('[href="#/users"]').addClass("active");
}, 0);
}
});
【讨论】: