发布于 2015-08-18 16:32:11 | 304 次阅读 | 评论: 0 | 来源: 网络整理
正如在定义路由中所说的,无论何时,只要你定义了一个新的路由,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.ObjectController
, Ember.ArrayController
, 和 Ember.Controller
。
Ember.js
如何选择生成的控制器类型取决于路由中你的model
钩子:
Ember.Controller
的实例。如果你想要自定义生成的控制器,你可以定义你自己的App.Controller
,App.ObjectController
和App.ArrayController
。生成的控制器会 扩展自它们其中一个(取决于上面的条件)。
一个路由也会跟对应视图和模板匹配。如果你没有定义对应的视图,那么系统会为你自动地生成一个视图。
一个生成的模板是空的。 如果它是个资源模板,基本上它像一个出口(outlet
)一样,以便嵌套的路由可以无缝的插入。 这个等同于:
1 |
{{outlet}} |