2016-09-19 1 views
2

私は何かをする前にユーザーが接続されているかどうかを確認するためにsericeを作成しようとしています。返信テストのあるanglejsサービス

app.service('generalService', function ($rootScope, ngDialog, Data, $location) { 
    this.checklogin = function(id) { 
     Data.get('checklogin').then(function (data) { 
      // no logged user, redirect to /login 
      if (!data) { 
       $location.path("/login"); 
      } 
      return data; 
     }); 
    } 
}); 

そしてそれは、私は、コントローラにそれを使用しようとする方法は次のとおりです:

サービスです

app.controller('childrenCtrl', function ($scope, $modal, $filter, Data, $location, $routeParams, generalService, childstatus) { 
    $scope.changepresence = function(child) { 
    generalService.checklogin($scope.child).then(function(res) { 
     if(data) { 
     // effective code here 
     } 
    }); 
    } 
}); 

I次のエラーました:「『し、』未定義のプロパティを読み取ることができませんが」

+0

checkloginはすでにデータを約束していません。 – raven

答えて

1

私のコメントによると、メソッドcheckloginはすでにデータを返すものであり、約束を返すものではありません。したがって、他の方法で約束を使い続ける場合は、これを変更する必要があります。

app.service('generalService', function ($rootScope, ngDialog, Data, $location) { 
    this.checklogin = function(id) { 
     return Data.get('checklogin'); 

    } 
}); 

app.controller('childrenCtrl', function ($scope, $modal, $filter, Data, $location, $routeParams, generalService, childstatus) { 
    $scope.changepresence = function(child) { 
    generalService.checklogin($scope.child).then(function(data) { 
     if(!data) { 
     // effective code here 
     $location.path("/login"); 
     } 
     //process the data. 
    }); 
    } 
+0

答えをありがとうが、私はリダイレクトを行う必要があることを意味する:$ location.path( "/ login")それぞれの場所でテストしたい?サービスで一度この行動をとる方法ではありませんか? –

関連する問題