簡體   English   中英

如何在Phonegap的onDeviceReady事件中添加Ember?

[英]How to add Ember to the onDeviceReady event in Phonegap?

在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 / Template放在自己的文件中,該如何解決此設計? 我不能一直用addMyEmberStuff函數包裝所有內容。

您希望在PhoneGap准備就緒之前阻止Ember應用程序啟動。 為此,您可以使用延期和提前准備。

App = Ember.Application.create()
App.Post = ...
App.PostsRoute = ...
App.PostsController =  ...

App.deferReadiness();

document.addEventListener('deviceready', function() {
  App.advanceReadiness();
});

一旦advanceReadiness ,Ember將開始為您的應用程序路由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM