1

これがフィドルです。これが私のローカルファイルの内容の要点です。

ご覧のとおり、HTML と JavaScript は同一であり、jQuery、Handlebars.js、および Ember.js ライブラリの同一バージョンをロードしています。ローカルでは期待どおりに動作しますが、jsFiddle.net でアプリケーション テンプレートをレンダリングしません。

Web コンソールに次のエラーが表示されます。

[19:44:18.202] エラー: アサーションに失敗しました: 少なくともオブジェクトとイベント名を Ember.addListener @ https://github.com/downloads/emberjs/ember.js/ember-latest.js:51に渡す必要があります

ところで、Gist をローカルの HTML ファイルとしてテストするには、必ず Web サーバーの背後で実行してください。そうしないと、ブラウザが JavaScript ライブラリをダウンロードしません。シン インストール (ruby Web サーバー) を使用している場合は、そのディレクトリにthin -A file start移動して を実行し、ブラウザーで localhost:3000/jsfiddle-problem.html に移動します。

4

2 に答える 2

3

フィドルの「Code Wrap」構成を「onLoad」以外のオプションのいずれかに設定すると、アプリケーションが機能します。ここにがあります。

これは、jQuery ready イベントが発生したときに Ember がアプリケーションを初期化するためです (Ember.Application.autoinit を false に設定していないと仮定します)。jsFiddle の "コード ラップ" 構成を "onLoad" に設定すると、jQuery の Ready イベントが発生した後、つまり Ember が自動初期化した後に、アプリケーションがドキュメントに導入されます。

以下の ember-latest のスニペットを参照してください。これは、この記事の執筆日に撮影されたもので、$().ready に渡されるハンドラー関数で実行される Ember 自動初期化を文書化しています。

if (this.autoinit) {
    var self = this;
    this.$().ready(function() {
        if (self.isDestroyed || self.isInitialized) return;
        self.initialize();
    });
}
于 2012-10-06T17:32:49.180 に答える
0

これは奇妙でした-autoinitを無効にするまで、あなたのフィドル、特にあなたの{{controller.foo}}呼び出しを機能させることができませんでした。jsfiddle を使用すると、ルーターが表示される前にアプリケーションの初期化が開始されると思います。また、enableLogging を true に設定した場合でも、ルーターが出力をログに記録していないことに気付きました。

autoinit を使用しないようにフィドルを更新しましたhttp://jsfiddle.net/zS5uu/4/。ember-latest の新しいバージョンが今日リリースされたことは知っていますが、初期化に関して何か変更があったのでしょうか。

于 2012-10-06T02:07:53.583 に答える