如何使用 Ember CLI 正确生成资源和路由
Posted
技术标签:
【中文标题】如何使用 Ember CLI 正确生成资源和路由【英文标题】:How to properly generate resources and routes with Ember CLI 【发布时间】:2014-09-15 14:46:49 【问题描述】:我正在尝试使用 Ember CLI 定义这样的资源和路由。
this.resource('events', function()
this.route('view', path: "/:id")
);
如果我试试这个:ember g resource events/view
我明白了:
this.resource('events/view', path: 'events/views/:events/view_id' );
如果我试试这个:ember g resource events
和:ember g resource events/view
this.resource('events', path: 'events/:events_id' );
this.resource('events/view', path: 'events/views/:events/view_id' );
如果我试试这个:ember g resource events
和:ember g route events/view
this.resource('events', path: 'events/:events_id' );
this.route('events/view');
有没有办法做到这一点?
【问题讨论】:
【参考方案1】:目前,您希望的模式中的嵌套资源和路由不会使用 Ember CLI 中的默认蓝图自动生成。默认蓝图生成骨架文件和文件结构,有些使用它们的afterInstall
挂钩来更新其他文件。按照这些默认蓝图,您可以正确生成这些项目:
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" );
)
);
您现在应该可以在浏览器中点击“events/view/1”,并在Ember Inspector's Routes 选项卡中查看您一直在寻找的路线。
或者,您可以执行以下操作,并生成自定义蓝图:
ember generate blueprint nested-resource-route
将在您的项目根目录中创建一个蓝图目录,其中包含您的新蓝图。使用资源和路线蓝图作为基础,您可以滚动自己的生成器来完成您的目标。
【讨论】:
感谢您详细说明所有这些内容。我在试图找出资源与路由时遇到了 Ember 101 问题,尤其是在嵌套方面,而这正是我解决问题和理解原始问题所需要的。【参考方案2】:您想要的行为在 ember-cli 0.1.5 及更高版本中是可能的。来自release notes:
#2748 改进了路由器生成器以支持正确嵌套 路线和资源,以前如果您有类似的路线:
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: ':friend_id/edit')
【讨论】:
以上是关于如何使用 Ember CLI 正确生成资源和路由的主要内容,如果未能解决你的问题,请参考以下文章
如何为特定浏览器导入脚本 Ember-CLi Broccoli