Ember.js和它的自动属性/传统行为

时间:2013-01-28 21:13:17

标签: ember.js

我最近发现了ember.js,它引起了我对它的复杂性和可能性的兴趣。到目前为止,我经历了几个学习材料:

从这些方面,我了解到关于如何使用框架有很多“假设”,我们应该如何命名视图,控制器和模型以及如果我们遵循这些约定,我们可以节省大量的代码输入,因为 Ember.js默认情况下可以“开箱即用”。

这当然非常方便,但只有当你真正知道幕后发生了什么事情时你才不必写。从那以后我的问题出现了:

例如,当我们定义一个应用程序模板和一个视图时,

发生了什么?我们自动完成了什么? applicationController是否为我们实例化?或者,我们是否必须手动创建一个?那些不是applicationViews / Controllers的其他视图/控制器对,如子视图(因为applicationView和applicationController在某种程度上是唯一的,因为它们必须存在于任何ember.js应用程序中)?

WHAT 路由器(来自1.0pre4的API)是否为我们自动执行,如果我们只定义一堆路由但不覆盖任何路由器的默认常规行为?

就个人而言,真正帮助我理解这里的关键概念的是示例应用程序,并转换到另一个状态,它将实现应用程序为了正常工作而需要执行的所有操作< / strong>(意思是,它不依赖于ember会为我们做的任何代码)。这样,我就可以看到各个部分在起作用,并在我脑海中“重新设计”这个过程,希望能够完整地理解这个过程。

如果这个问题过于复杂或模糊,请建议我如何缩小我的兴趣。

1 个答案:

答案 0 :(得分:0)

开始使用EmberJS时,你真的不需要太多东西。我在这里创建了一个JSFiddle:http://jsfiddle.net/nzXW9/,突出了简单应用程序的简单性。我还创建了一个多余的App.PetsCatsController,只是为了演示当你进入pets.cats路线时它是如何自动成为控制器的。

您无需applicationControllerapplicationView即可开始使用。默认情况下,Ember从pets.index路线开始假定以下内容:PetsIndexControllerPetsIndexViewPetsIndexRoute

根据我对EmberJS的理解,让我们采用一个简单的示例场景(我们现阶段没有DS模型),当我们进入#/ pets / cats路线时:

  1. 如果可以,请参阅PetsCatsRoute以获取有关进入此路线的说明;
  2. 由于Ember的控制器是单身,检查我们是否已经有PetsCatsController的实例,如果我们这样做,请转到#5,否则转到#3;
  3. 检查是否有用户定义的PetsCatsController,如果有创建它的实例;
  4. 如果没有用户定义PetsCatsController,请实例化EmberJS生成的PetsCatsController控制器;
  5. 找到相应的PetsCatsView(如果存在),否则自动生成一个。{/ li>

    您还会注意到JSFiddle,您不一定需要关注索引路由,除非您需要扩展项目。