javascript - 如何将 Ember 添加到 Phonegap 中的 onDeviceReady 事件?

标签 javascript cordova ember.js

在 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/

相关文章:

javascript - AngularJS 在这种情况下有什么简短的方法来调用父作用域吗?

javascript - Firebase 在 cordova 暂停时断开连接

javascript - commitLoginForm() 不会将数据发送到身份验证服务器 - MobileFirst Cordova 客户端

android - 没有Phonegap服务且没有Internet的Adobe Dreamweaver CS6编译应用程序

ember.js - 由 hasMany 关系定义的 Ember 子项突然更改为嵌入式模型

node.js - 如何在 Node.js 服务器上缓存 AWS S3 文件并根据请求提供服务?

javascript - 通过 Ember 颜色选择器更新 SCSS 变量

javascript - Chrome 扩展内容脚本不起作用

javascript - EmberJS - 断言失败 : The value that #each loops over must be an Array. 你通过了(生成的应用程序 Controller )

javascript - 如何在同一个select中使用v-model和其他js插件