Ember.js 如何使用Ember CLI正确生成资源和路由

Ember.js 如何使用Ember CLI正确生成资源和路由,ember.js,ember-cli,Ember.js,Ember Cli,我正在尝试使用Ember CLI定义这样的资源和路由 this.resource('events', function() { this.route('view', { path: "/:id"}) }); 如果我尝试以下操作:ember g资源事件/视图 this.resource('events/view', { path: 'events/views/:events/view_id' }); 如果我尝试以下操作:ember g资源事件 和:ember g

我正在尝试使用Ember CLI定义这样的资源和路由

    this.resource('events', function() {
        this.route('view', { path: "/:id"})
    });
如果我尝试以下操作:
ember g资源事件/视图

this.resource('events/view', { path: 'events/views/:events/view_id' });
如果我尝试以下操作:
ember g资源事件
和:
ember g资源事件/视图

this.resource('events', { path: 'events/:events_id' });
this.resource('events/view', { path: 'events/views/:events/view_id' });
this.resource('events', { path: 'events/:events_id' });
this.route('events/view');
如果我尝试以下操作:
ember g资源事件
和:
ember g路线事件/视图

this.resource('events', { path: 'events/:events_id' });
this.resource('events/view', { path: 'events/views/:events/view_id' });
this.resource('events', { path: 'events/:events_id' });
this.route('events/view');

有办法做到这一点吗?

此时,您所需的模式中的嵌套资源和路由不会自动生成,并使用Ember CLI中的默认蓝图。默认蓝图生成框架文件和文件结构,有些蓝图使用
afterInstall
hook更新其他文件。按照这些默认蓝图,您将正确生成以下项目:

    ember g resource events
    ember g route events/view
然后,您可以修改Router.js中的Router.map,使用您的预期嵌套:

    Router.map(function() {
      this.resource('events', function() {
        this.route('view', { path: "/view/:id" });
      })
    });
现在,您应该能够在浏览器中点击“事件/视图/1”,并在“路线”选项卡中查看您一直在寻找的路线

或者,您可以执行以下操作,并生成自定义蓝图:

    ember generate blueprint nested-resource-route

将在项目根目录中创建蓝图目录,其中包含新的蓝图。使用资源和路线蓝图作为基础,你可以滚动你自己的发电机来完成你正在寻找的东西。

< P>你想要的行为在Enter CLI0.1.5以后是可能的。从:

改进了路由器生成器以支持正确嵌套 路线和资源,以前如果您有类似的路线:

Router.map(function() {
  this.route("foo");
});
你做了
ember g route foo/bar
生成的路由将是

Router.map(function() {
  this.route("foo");
  this.route("foo/bar");
});
现在,它将正确管理嵌套路由,因此结果将是:

Router.map(function() {
  this.route("foo", function() {
    this.route("bar");
   }); 
});
此外,还添加了选项
--path
,以便您可以执行类似于
ember g route friends/edit--path=:friend_id/id
创建嵌套
friends
下的路由类似于:
this.route('edit',{path:':friends\u id/edit'})


谢谢你把这一切都说清楚了。我遇到了Ember 101问题,试图找出资源与路线的关系,特别是在嵌套方面,这正是我解决问题和理解原始问题所需要的。