我习惯于考虑这样的单页应用程序启动:1。将一些数据引导到关键模型中,2。实例化一个主控制器,然后3.调用它的render()方法来启动它。
这与Ember如何实现?按照文档中的(微薄,叹息)示例,当页面加载时,似乎有些事情会自行启动 - 模板被编译,视图在页面加载时呈现魔术。我觉得我错过了一些基本的东西。它有一个更复杂的应用程序的在线示例,用标签或动态加载的视图说什么?
灯泡,不是它。
答案 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
的状态的方法,并在存在时触发它。
状态管理器是初始化应用程序的自然场所,因为该对象提供了在异步加载过程中微观管理执行顺序的方法,而不会纠缠于过多的回调中。