2

ルートの解決メンバーに次のコードがあります。

resolve: {
    loadData: function ($q) {
        var deferred = $q.defer();
        var fbRef = new Firebase("https://myPathToFirebase");
        var auth = new FirebaseSimpleLogin(fbRef, function (error, user) {
            console.log('resolving. ' + user.id + ', Provider: ' + user.provider);
            deferred.resolve();
        });
        console.log('returning..');
        return deferred.promise;
    }
}

FirebaseSamleLogin 内のコールバックは、わかりやすくするために単純化されています。ロギングは、コードが期待どおりに実行されることを示しています。ユーザー ID とプロバイダー (facebook) がコールバックに出力されます。私の問題は、 deferred.resolved() が機能していないことです。コードはコントローラー コードの実行とテンプレートのレンダリングを続行しません。遅延が解決されなかったかのように。私はここで立ち往生しており、助けや提案をいただければ幸いです ありがとう

4

2 に答える 2

0

そして、 @zsong が書いたように $rootscope を使用して $apply() で resolve() をラップすると?

resolve: {
    loadData: function ($q,$rootscope) {
        var deferred = $q.defer();
        var fbRef = new Firebase("https://myPathToFirebase");
        var auth = new FirebaseSimpleLogin(fbRef, function (error, user) {
            console.log('resolving. ' + user.id + ', Provider: ' + user.provider);
            $rootscope.$apply(deferred.resolve());
        });
        console.log('returning..');
        return deferred.promise;
    }
}
于 2016-03-03T11:03:28.910 に答える