私はこの質問が古いことを知っていますが、受け入れられた答えもクリーンなものもないので、これも解決しようとしています。
アプリごとの解決状態を有するの欠如は、今しばらくの間、私を盗聴し、これは私が最終的に思い付いたソリューションです。要するにhttp://jsfiddle.net/gabrielcatalin/cvyq0oys/
、私は角モジュールエンハンサー(デコレータ)を作成し、これは2つの方法をさらにサポートします:解決方法と準備完了()。 AngularEnhancerスニペットだけangular.js後にロードする必要がロードされており、実装前に、そのよう:
angular.module('myApp', [])
.ready(function() {
alert('The app is ready to be used!');
})
.resolve(['$q', function ($q) {
// The resolve can wait for a promise to be resolved
var differed = $q.defer();
setTimeout(function() {
differed.resolve();
}, 1000);
return differed.promise;
// Or a true value
// return true;
// Or even a truish value
// return 'value';
}])
.ready(function() {
// The order of where the ready() appear doesn't matter
alert('This is just another alert to show that it can have as many as possible!');
});
とhtml:
を
<script type="text/javascript" src="angular.js">
<script type="text/javascript" src="angularEnhancer.js">
<script type="text/javascript" src="main.js">
これは、実装がどのように見えるかです
<body>
<div ng-if="!appReady" class="splash-screen">This is just the splash screen!</div>
<div ng-if="appReady">Welcome to the app!</div>
<script>
angular.element(document).ready(function() {
angular.bootstrap(document, ['myApp']);
});
</script>
</body>
皆様からのご意見をお待ちしております。
特定の「アプリ」解決方法はありませんか?私は15の異なるコントローラを持っている場合、私は1回だけ "解決"オブジェクトを指定したい(app ... resolve:mydata)、同じブロックではなく15回。 –
しかし、解決ファイルは興味深いアプローチです。 –
多分あなたは次のようなことを試すことができます:http://jsfiddle.net/N9eAz/ 私はそこにJavaScriptのエラーがないことを超えてテストしていません。あなたの 'app.resolveUsers()'関数は約束を返すべきです、または各メンバーが約束であるオブジェクトを返すべきです。あなたのルート宣言の直後にあなたのアプリケーションの設定にある限り、私はそれがトリックを行うだろうと思うだろう。 – jdp