返回介绍

路由 - 生成的对象

发布于 2020-02-21 15:48:02 字数 1888 浏览 1111 评论 0 收藏 0

英文原文:http://emberjs.com/guides/routing/generated-objects/

正如在定义路由中所说的,无论何时,只要你定义了一个新的路由,Ember.js都会试着根据命名惯例寻找相对应的路由,控制器,视图还有模板类。一旦有任何一个对象找不到,那么在内存中,相对应的对象将会被生成。

生成的路由

假设你有下列路由:

1
2
3
App.Router.map(function() {
  this.resource('posts');
});

当你导航到/posts时,Ember.js会寻找App.PostsRoute。如果找不到,它会自动地为你生成App.PostsRoute

自定义生成的路由

你可以让你所有生成的路由都扩展自一个自定义的路由。如果你定义了App.Route,所有生成的路由都将会是这个路由的实例。

生成的控制器

如果你导航到posts路由,Ember.js会寻找名为App.PostsController的控制器。如果你没有定义它,他会被自动生成。

Emeber.js可以生成三种类型的控制器: Ember.ObjectControllerEmber.ArrayController, 和 Ember.Controller

Ember.js如何选择生成的控制器类型取决于路由中你的model钩子:

  • 如果返回一个对象(例如单个记录),生成一个ObjectController
  • 如果返回一个数组,生成一个ArrayController
  • 如果不返回任何东西,那么生成一个Ember.Controller的实例。
自定义生成的控制器

如果你想要自定义生成的控制器,你可以定义你自己的App.ControllerApp.ObjectControllerApp.ArrayController。生成的控制器会 扩展自它们其中一个(取决于上面的条件)。

生成的视图和模板

一个路由也会跟对应视图和模板匹配。如果你没有定义对应的视图,那么系统会为你自动地生成一个视图。

一个生成的模板是空的。 如果它是个资源模板,基本上它像一个出口(outlet)一样,以便嵌套的路由可以无缝的插入。 这个等同于:

1
{{outlet}}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文