Ember JS-从资源到路由的路由

时间:2018-06-25 11:49:31

标签: ember.js routes

我正在尝试将项目从2.x版本更新和嵌入到3.x版本,而我的第一个问题是在路由文件中我得到了this.resouce未定义。我相信这已被弃用。代码如下:

  this.route('objects', function () {
    this.route('search', { path: '/' }, function () {
      this.resource('objects.items', { path: '/:search_id' }, function () {
        this.resource('objects.item', { path: '/item/:item_id'}, function () {
          this.route('general', { path: '/' });
          this.route('tab', { path: '/tab/:tab' });
          this.route('relations');
          this.route('diagram');
          this.route('comments');
          this.route('sources');
          this.route('views');
        });
      });
    });
  });

我试图简单地将资源更改为路由并给resetNameSpace:true属性,但没有帮助。我也尝试了各种组合,但没有运气。 有经验的人可以帮助我重做此路由,使其与最新的余烬兼容吗?

1 个答案:

答案 0 :(得分:1)

由于this.resource()实际上是Ember重置名称空间的一种旧方法,因此resetNameSpace: true属性的作用确实相同!

由于使用了this.resource('objects.items'),因此实际上创建了一个重置​​的命名空间,其中objects是路由。

所以您的新路由器看起来像¹:

this.route('objects', function () {
    this.route('search', { path: '/'});
    this.route('items', { path: '/:search_id'});
    this.route('item', { path: '/item/:item_id' }, function () {
        this.route('general', { path: '/' });
        this.route('tab', { path: '/tab/:tab' });
        this.route('relations');
        this.route('diagram');
        this.route('comments');
        this.route('sources');
        this.route('views');
    });
});

这样,您仍然可以使用transitionToRoute("objects.item.general", id)


¹注意没有使用resetNameSpace标志!