【问题标题】:Is there a way to pass an array to currentWhen in EmberJS?有没有办法在 EmberJS 中将数组传递给 currentWhen?
【发布时间】:2013-08-27 19:24:11
【问题描述】:

我正在尝试使链接在多个路由上保持“活动”,例如 /#/users 和 /#/user。

有什么想法吗?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您可以重新打开 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')
    });
    

    【讨论】:

    • 从 Ember 1.8 开始,你可以设置 current-when 用空格分隔的路由串!
    • 应该使用 Ember App Kit 在哪里定义?
    【解决方案2】:

    这是一个完全的 hack,但它在 Ember 1.0.0 中有效。在用户路由处于活动状态时使指向用户的链接保持活动状态:

    App.UserRoute = Ember.Route.extend({
    
        activate: function() {
            setTimeout(function() {
                $('[href="#/users"]').addClass("active");
            }, 0);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      相关资源
      最近更新 更多