我正在尝试将项目从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属性,但没有帮助。我也尝试了各种组合,但没有运气。 有经验的人可以帮助我重做此路由,使其与最新的余烬兼容吗?
答案 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
标志!