首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ember.js -从任何路由交换嵌套资源

ember.js -从任何路由交换嵌套资源
EN

Stack Overflow用户
提问于 2014-12-30 18:04:30
回答 1查看 171关注 0票数 7

我有带有嵌套动态段的路由,例如/:locale/products/:product_id/items/:item_id等嵌套。我想在区域设置路由中的动作中交换区域设置。当我更改区域设置时,我不想转换到基本的/:locale路由。

区域路由操作:

代码语言:javascript
复制
actions: {
  localeChanged: function(locale) {
    var route = this.controllerFor('application').get('currentRouteName');
    this.transitionTo(route, locale);
  }
}

这只在我没有深入嵌套的情况下起作用。我希望避免在每个路由中实现localeChanged操作,以提供给定路由所需的精确模型。

更新1-污秽解决方案:

代码语言:javascript
复制
actions: {
  localeChanged: function(locale) {
    var routes = this.router.router.currentHandlerInfos;
    var models = [];
    for (var i = 0; i < routes.length; i++) {
      var params = routes[i].params;
      for (var param in params) {
        if (params.hasOwnProperty(param)) {
          models.push(param === 'locale' ? locale : params[param]);
        }
      }
    }

    var args = models.slice();
    var currentRouteName = this.controllerFor('application').get('currentRouteName');
    args.unshift(currentRouteName);
    this.transitionTo.apply(this, args);
  }
}

我说“脏”是因为迭代this.router.router.currentHandlerInfos似乎容易出错。有更好的办法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-19 00:02:09

您可以创建一个添加此操作的baseRoute。那么您的所有路由都可以从这个基本路由继承。您只需编写一次代码,就可以在所有路由上共享代码。例如。

代码语言:javascript
复制
App.BaseRoute = Ember.Route.extend({
   actions: {
    localeChanged: function(locale) {
     var routes = this.router.router.currentHandlerInfos;
     var models = [];
     for (var i = 0; i < routes.length; i++) {
      var params = routes[i].params;
      for (var param in params) {
        if (params.hasOwnProperty(param)) {
          models.push(param === 'locale' ? locale : params[param]);
        }
      }
     }  
     var args = models.slice();
     var currentRouteName =  this.controllerFor('application').get('currentRouteName');
     args.unshift(currentRouteName);
     this.transitionTo.apply(this, args);
    }
   }});


App.SomeRoute = BaseRoute.extend();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27710301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档