1

AngularJSを使用して Firefox 拡張機能を開発しており、main.js ファイル内で AngularJS サービスの一部を使用しようとしています。require()関連するモジュールをインクルードし、モジュールangular.bootstrap()を初期化するために使用します。

ただし、常に次のエラーが発生します。

参照エラー: ウィンドウが定義されていません

他にできることはありますか?

4

4 に答える 4

1

AngularJSは、実際にはこの種の環境を対象としたものではありません。これはMVCフレームワークであり、この場合、V(ビュー)がありません。AngularJSを何に使用するかはわかりませんが、コンテンツスクリプトで使用することを検討することをお勧めしますmain.js

とはいえ、AngularJSはwindow、グローバルオブジェクトにアクセスするための手段として単に使用していることがよくあります。これは簡単に修正できます。AngularJSソースコードの最後から2番目の行は次のように述べています。

})(window, document);

これは次のように変更する必要があります。

})(this, document);

これにより、少なくとも、実際にはビューを必要としない機能を続行できます。もちろん、最後の行(スタイルシートをドキュメントに挿入しようとしている行)を削除して、angular代わりに変数をエクスポートする必要があります。

exports.angular = angular;
于 2012-09-14T06:37:08.390 に答える
1

詳細があまりないので、この提案があなたのやりたいことに合っているかどうかはわかりません. DOM を必要とし、ユーザーにドキュメントを表示したくない JS ライブラリを使用したい場合は、page-worker モジュールの使用を検討してください。

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/page-worker.html

SDK コードで使用される他のコンテンツ ドキュメントと同様に、worker と main.js 間のイベント ドリブン通信を設定する必要があります。

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/guides/events.html

于 2012-09-14T19:12:19.703 に答える
0

更新しようとしているビューは何ですか? angular.bootstrapコンパイルを開始するための非ルート要素を提供できるはずです。http://docs.angularjs.org/api/angular.bootstrap

ウィンドウに依存するサービスを使用している場合は、独自の微調整$windowサービスを提供する必要がある場合もあります。http://docs.angularjs.org/api/ng.$window

于 2012-09-14T07:00:28.787 に答える
0

経由でウィンドウオブジェクトを取得する必要があるかもしれません var window = require("window-utils").activeBrowserWindow;か?

于 2012-09-13T22:19:07.890 に答える