Ember.js:“开始”按钮在哪里?

时间:2012-01-27 17:15:46

标签: ember.js

我习惯于考虑这样的单页应用程序启动:1。将一些数据引导到关键模型中,2。实例化一个主控制器,然后3.调用它的render()方法来启动它。

这与Ember如何实现?按照文档中的(微薄,叹息)示例,当页面加载时,似乎有些事情会自行启动 - 模板被编译,视图在页面加载时呈现魔术。我觉得我错过了一些基本的东西。它有一个更复杂的应用程序的在线示例,用标签或动态加载的视图说什么?

灯泡,不是它。

3 个答案:

答案 0 :(得分:4)

我已经开始了一个关于使用Ember on Rails启动和运行的博客系列。这是第1部分:

http://www.cerebris.com/blog/2012/01/24/beginning-ember-js-on-rails-part-1/

我希望你会发现它很有用,即使你不打算使用Ember和Rails。大多数有趣的细节都是客户端的,因此与服务器无关。到目前为止的帖子包括创建Ember.Application对象,通过REST接口动态加载数据,然后在手柄中的页面上呈现Ember视图。我希望这足以让你开始。

答案 1 :(得分:3)

扩展ember Application对象时,可以提供一个就绪函数,该函数将在应用程序启动时调用。你必须确保调用this._super(),否则它将破坏你的应用程序。看看我的sample sproucore 2.0 application(ember是sproutcore 2.0的新名称)。

ember的工作方式是它设置一个响应事件的运行循环。每当事件触发时,运行循环基本上调用必要的处理程序并运行需要更新的任何绑定。由于一切都通常发生在运行循环中,因此您通常不会编写任何代码来更新内容。而是编写在需要时触发的绑定。

答案 2 :(得分:0)

我做的另一件事是使用Em.StateManager来引导。

App.Loader = Em.StateManager.create({
  start: Em.State.create({
    enter: function(mgmt, ctx) {
      // this code will execute right away, automatically
    }
  })
});

由于您使用create而不是extend,因此将立即实例化对象。如果定义名为start的状态,它将被识别为默认初始状态(或者您可以按名称指定另一个状态)。因此,新的StateManager对象将立即进入初始状态,当StateManager进入新状态时,它将始终查找名为enter的状态的方法,并在存在时触发它。

状态管理器是初始化应用程序的自然场所,因为该对象提供了在异步加载过程中微观管理执行顺序的方法,而不会纠缠于过多的回调中。