ember.js – Ember路由和控制器和视图

我已经阅读了Ember.js网站上的大多数初学者指南,但我仍然困惑于正确的地方放置东西。

>路由 – 从在线研究人员建议把路由相关的逻辑放在路由。这一切都很好,但我唯一能想到的是this.transisionTo()。我在别的地方读到所有模型相关的操作应该在路由中,因为这是模型字段定义的地方。它是否正确?什么是在控制器上的路由中采取行动的一些好的用例?
> View – 目前,我看不到视图的点。文档说,它处理本机DOM事件,但我可能总是使用{{action}}帮助器,将由控制器处理。那么什么是一些好的使用情况下使用视图控制器关于操作?什么是一些好的用例的视图一般认为我将使用组件的视图可重用代码。
> Controller – 我觉得控制器可以做任何View或Route可以做的事情。它可以使用this.transitionToRoute()转换,它可以使用this.get(‘model’)。save()保存模型,并且可以使用{{action}}帮助器处理动作。所有初学者教程似乎完全忽略该视图,并改用控制器。在View或Route上使用Controller的一些好的用例是什么?

我想这一切都归结于对一切如何挂在一起的差的理解。我在网上或在文档中找不到任何明确的灰色区域,例如在不同情况下使用{{action}}助手的位置。链接到一些好的材料也将是有益的。

最佳答案
更新:并不是所有的信息将正确的Ember 2。据我所知Ember 2.0将只使用组件。

如何Ember.js的各种组件合身

模型

模型负责与数据存储交互。数据存储的示例可以是RESTful服务器或Localstorage。

模板

模板负责从可用于其控制器和视图的数据构建HTML。控制器又可以访问模型。

控制器和视图

控制器和视图非常相似,并且都作用于用户生成的事件。控制器应该对诸如提交的语义事件采取行动,并且View应该对诸如焦点或点击的交互事件采取行动。

路由器

Ember有一个路由器。路由器链接urls到路由。例如users /:user_id to users.show route或UsersShowRoute。

路线

每个Route,当激活时,负责解包到一个状态的url。例如,用户/:user_id需要用户登录才能看到朋友的个人资料。路由确保用户登录并负责登录的状态。

路由从数据存储获取信息。例如,用户/ pekhee将从数据存储获取pekhee用户,并将其提供给Controller和View。

路由动态地选择需要什么Controller和View,或者它需要多少。

路由管理应用程序的状态以及应如何表示该状态。然而,模型负责管理应用程序的状态,路由和控制器/视图负责管理其表示的细节细节。

将逻辑保持为相关和尽可能本地:一些注释

>如果你的逻辑不关心任何上下文或模型放在激活回调的路由。
>如果一段逻辑只需要知道model放在afterModel回调的路由。
>如果需要知道Controller的上下文或者与资源的语义意义交互,将它放在控制器中。
>如果需要知道View的上下文或与资源的表示进行交互,则将它放在视图中。
>如果需要知道上下文或者与资源的语义和表示进行交互,则首先将该事件提供给视图,然后将其升级到控制器。

例子

当多个控制器使用一个模型时,将语义动作保持在链中最高可能的路由上,否则在大多数本地控制器中保持逻辑。

保持动画相关代码在查看和使用液体火。

有时每个用户有很多帖子,每个帖子有很多评论。尝试有一个Route返回相关用户。然后问相关用户在PostsRou​​te的帖子,然后尝试在CommentsRou​​te中请求相关评论。这使逻辑尽可能保持局部。您评论路由不需要知道如何检索用户。

转载注明原文:ember.js – Ember路由和控制器和视图 - 代码日志