1

frame状態をロードするときに$rootScope、以前の状態から定義されたすべての必要なプロパティがあることを確認しようとしています。

モジュールは角度のionic.utilsあるアプリに正しく挿入されています。このモジュールは、services.jsファイルから取得されます。

angular.module('ionic.utils', [])
.factory('dataService', ['$rootScope','$q','$timeout', function($rootScope, $q, $timeout) {
    return {
        get: function() {
            var deferred = $q.defer();
            $timeout(function() {
              deferred.resolve($rootScope);
            }, 2000);
            return deferred.promise;
        }
    }
}]);

controllers.jsファイル内では、これがframe状態に対応するコントローラーです。

.controller('FrameCtrl', ['$scope','$state','$rootScope','dataService',
function($scope, $state, $rootScope, dataService) {
    // get active address and delivery time.
    dataService.get().success(function() {
        console.log("derp");
    });
}])

ただし、このコントローラーは、状態遷移時に次のコンソール エラーを返します。

ionic.bundle.js:17696 TypeError: Cannot read property 'get' of undefined
    at new <anonymous> (controllers.js:201)
    at invoke (ionic.bundle.js:11591)
    at Object.instantiate (ionic.bundle.js:11602)
    at $get (ionic.bundle.js:14906)
    at updateView (ionic.bundle.js:42986)
    at IonicModule.directive.directive.compile.eventHook (ionic.bundle.js:42933)
    at Scope.$get.Scope.$broadcast (ionic.bundle.js:20605)
    at $state.transitionTo.$state.transition.resolved.then.$state.transition (ionic.bundle.js:34122)
    at deferred.promise.then.wrappedCallback (ionic.bundle.js:19197)
    at ionic.bundle.js:19283

私が書いたサービスでエラーを見つけるのに苦労しています。いくつかの助けをいただければ幸いです。

編集 依存性注入をコントローラーに追加した後、エラーが変更されました。ここにあります:

TypeError: object is not a function
    at new <anonymous> (controllers.js:202)
    at invoke (ionic.bundle.js:11591)
    at Object.instantiate (ionic.bundle.js:11602)
    at $get (ionic.bundle.js:14906)
    at updateView (ionic.bundle.js:42986)
    at IonicModule.directive.directive.compile.eventHook (ionic.bundle.js:42933)
    at Scope.$get.Scope.$broadcast (ionic.bundle.js:20605)
    at $state.transitionTo.$state.transition.resolved.then.$state.transition (ionic.bundle.js:34122)
    at deferred.promise.then.wrappedCallback (ionic.bundle.js:19197)
    at ionic.bundle.js:19283
4

2 に答える 2

2

コントローラーの依存関係配列に、引数に渡された多数の依存関係がありません

.controller('FrameCtrl', [ 'Rootscope', function($scope, $state, 
$rootScope, Rootscope) {

する必要があります

.controller('FrameCtrl', ['$scope','$state', '$rootScope', 'Rootscope', function($scope, $state, 
    $rootScope, Rootscope) {

確かに、サービスに名前を付けるのは私には紛らわしいようですRootscope!

于 2015-01-23T18:00:12.197 に答える
1

通常、promise.thenでは、success 関数を最初のパラメーターとして受け取り、error 関数を 2 番目のパラメーターとして使用するだけです。

successandは、 or $resourceerrorを使用するときに AngularJS が追加する promise の関数です。$httpそれらは標準ではありません。他の約束では見つかりません。

コード

dataService.get().then(function() { 
    console.log("derp"); 
});

リターンがありませんでしたdeferred.resolve()

 angular.module('ionic.utils', []).factory('dataService', ['$rootScope', '$q', '$timeout', function($rootScope, $q, $timeout) {
        return {
            get: function() {
                var deferred = $q.defer();
                $timeout(function() {
                    return deferred.resolve($rootScope);
                }, 2000);
                return deferred.promise;
            }
        }
    }]);

うまくいけば、これはあなたを助けるでしょう. ありがとう。

于 2015-01-23T21:20:39.860 に答える