在 Phonegap 中,我们等待 onDeviceReady
事件让我们的代码开始执行。按照这条路径,我像这样添加了我的 Ember 应用程序:
var App = null; // Ember
var phonegap = {
initialize: function () {
this.bindEvents();
},
bindEvents: function () {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function () {
App = Ember.Application.create({});
// Now I can start adding my Ember stuff, but
// even for a tutorial app that is somewhere between
// 100 to 200 lines and it will be harder to maintain
// inside here. So I wrap that with a function
// and put it outside.
addMyEmberStuff();
}
}
function addMyEmberStuff() {
// Ember Routes, Controllers, Views etc.
App.Router.map(function() {
});
App.IndexController = Ember.Controller.extend({
init: function () {
this._super();
// device API calls
// create/render View(?)
// trigger DOM events etc
}
});
}
我知道我可以在 onDeviceReady
之外初始化一个 Ember 应用程序,一切都会继续工作。问题在于应用程序的索引页面调用了设备 API,并且在 Ember 开始发挥其魔力之前必须发生一些 DOM 事件。
在我看来,这是正确的做事方式。
如果我想将每个 Ember Controller / View /模板放在自己的文件中,我该如何解决大型应用程序的设计问题?我不能一直用 addMyEmberStuff
函数包装所有内容。
最佳答案
您想阻止您的 Ember 应用程序在 PhoneGap 准备好之前启动。为此,您可以使用延迟和提前准备。
App = Ember.Application.create()
App.Post = ...
App.PostsRoute = ...
App.PostsController = ...
App.deferReadiness();
document.addEventListener('deviceready', function() {
App.advanceReadiness();
});
一旦 advanceReadiness
被调用,Ember 将开始为您的应用程序进行路由。
关于javascript - 如何将 Ember 添加到 Phonegap 中的 onDeviceReady 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23744115/