6

私はEmberの初心者で、それを機能させようとしています。ただし、App.initialize()メソッドについて混乱しています。

次のコードを使用すると、エラーがスローされます(オブジェクトAppが見つかりません)。

App = Ember.Application.extend()
App.initialize()

ただし、次のコードを使用すると、initializeが2回呼び出されていることを示しています。

App = Ember.Application.create()
App.initialize()

これを行うための最良の方法は何ですか?

4

5 に答える 5

9

はメソッドApplicationを提供しなくなりました。代わりに、使用して組み合わせるinitialize必要があります。Application#deferReadinessApplication#advanceReadiness

Emberのソースコードから抽出された例:

App = Em.Application.create();
App.deferReadiness();

jQuery.getJSON("/auth-token", function(token) {
  App.token = token;
  App.advanceReadiness();
});

さらに、jsfiddleのサンプルを確認してください。

window.App = Em.Application.create();

App.deferReadiness();

window.setTimeout(function() {
  Em.TEMPLATES["application"] = Em.Handlebars.compile('<h1>App</h1> this is a template');
  App.advanceReadiness();
}, 1500);
于 2012-11-28T12:31:49.580 に答える
3

まず、create()とextend()の違いを理解する必要があります。理解する簡単な方法は、extend()メソッドがEmber.Applicationのクラスを拡張するだけですが、create()メソッドはEmber.Application()のインスタンスを作成します。インスタンスの作成中に、コンストラクターを実行します。Ember.Appを作成して実行するには3つの方法があります。

1

var App= Ember.Application.extend()
App.initialize()

2.2。

var App = Ember.Application.create()

これは、uがオブジェクトを作成するとすぐに初期化されます。

3

var App= Ember.Application.extend()
App.create()

Emberオブジェクトをさらに理解するには、このリンクを参照してください。Ember.Objectを理解する

于 2012-11-28T08:30:24.517 に答える
3

アプリケーションを作成し、Emberに初期化させるだけです。

あなたがする必要があるのは:

App = Ember.Application.create()

アプリはすぐには初期化されません。少なくとも、DOMの準備が整い、残りのクラスが定義されるのを待ちます(現在実行されているJavaScriptからブラウザーに制御が返されるまで待ちます)。

他の理由で延期したい場合は、次のようにします。

App.deferReadiness();
$.getJSON("/boot", function() { App.advanceReadiness(); });

/bootこれは、 Ajax呼び出しが戻るまでアプリの起動を待機します。

于 2013-01-16T19:51:08.363 に答える
1

このようなことを行う方法をここで見てください:

http://emberjs.com/documentation/#toc_creating-a-namespace

ブートストラップする方法:

window.App = Ember.Application.create();

ember.jsを使用せずに、作成と初期化の両方で初期化を行うことをお勧めします。そのため、2回初期化されたことを示す後者のエラーが発生します。

そして、最初のバージョンはApplicationオブジェクトを拡張しようとしています。つまり、新しい機能を作成します。

于 2012-11-28T08:12:22.777 に答える
1

Emberの「create」メソッドは、引数を受け入れないか、新しくインスタンス化されたオブジェクトを初期化するための値を含むオブジェクトを受け入れるため、次のようにすることもできます。

 var appConfig = {
        Token: token;
    };

 App = Ember.Application.create(appConfig);
于 2014-09-05T12:26:32.050 に答える